<?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="atspi-2"/>
  <c:include name="atspi/atspi.h"/>
  <namespace name="Atspi"
             version="2.0"
             shared-library="libatspi.so.0"
             c:identifier-prefixes="Atspi"
             c:symbol-prefixes="atspi">
    <alias name="ControllerEventMask" c:type="AtspiControllerEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="DeviceEventMask" c:type="AtspiDeviceEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeyEventMask" c:type="AtspiKeyEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeyMaskType" c:type="AtspiKeyMaskType">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeystrokeListener" c:type="AtspiKeystrokeListener">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <class name="Accessible"
           c:symbol-prefix="accessible"
           c:type="AtspiAccessible"
           parent="Object"
           glib:type-name="AtspiAccessible"
           glib:get-type="atspi_accessible_get_type"
           glib:type-struct="AccessibleClass">
      <implements name="Action"/>
      <implements name="Collection"/>
      <implements name="Component"/>
      <implements name="Document"/>
      <implements name="EditableText"/>
      <implements name="Hypertext"/>
      <implements name="Image"/>
      <implements name="Selection"/>
      <implements name="Table"/>
      <implements name="TableCell"/>
      <implements name="Text"/>
      <implements name="Value"/>
      <method name="clear_cache" c:identifier="atspi_accessible_clear_cache">
        <doc xml:space="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>
        <parameters>
          <instance-parameter name="accessible" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible whose cache to clear.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_action"
              c:identifier="atspi_accessible_get_action"
              shadows="get_action_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiAction interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_action_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_action_iface"
              c:identifier="atspi_accessible_get_action_iface"
              shadowed-by="get_action">
        <doc xml:space="preserve">Gets the #AtspiAction interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_application"
              c:identifier="atspi_accessible_get_application"
              throws="1">
        <doc xml:space="preserve">Gets the containing #AtspiApplication for an object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the containing #AtspiApplication instance for
         this object.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible being queried.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_atspi_version"
              c:identifier="atspi_accessible_get_atspi_version"
              throws="1">
        <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_attributes"
              c:identifier="atspi_accessible_get_attributes"
              throws="1">
        <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible being queried.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_attributes_as_array"
              c:identifier="atspi_accessible_get_attributes_as_array"
              throws="1">
        <doc xml:space="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:space="preserve">The name-value-pair
         attributes assigned to this object.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible being queried.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_child_at_index"
              c:identifier="atspi_accessible_get_child_at_index"
              throws="1">
        <doc xml:space="preserve">Gets the #AtspiAccessible child of an #AtspiAccessible object at a given index.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the number of children contained by an #AtspiAccessible object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_collection"
              c:identifier="atspi_accessible_get_collection"
              shadows="get_collection_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiCollection interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_collection_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_collection_iface"
              c:identifier="atspi_accessible_get_collection_iface"
              shadowed-by="get_collection">
        <doc xml:space="preserve">Gets the #AtspiCollection interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_component"
              c:identifier="atspi_accessible_get_component"
              shadows="get_component_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiComponent interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_component_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_component_iface"
              c:identifier="atspi_accessible_get_component_iface"
              shadowed-by="get_component">
        <doc xml:space="preserve">Gets the #AtspiComponent interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="atspi_accessible_get_description"
              throws="1">
        <doc xml:space="preserve">Gets the description of an #AtspiAccessible object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a UTF-8 string describing the #AtspiAccessible object
or NULL on exception.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_document"
              c:identifier="atspi_accessible_get_document"
              shadows="get_document_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiDocument interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_document_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_document_iface"
              c:identifier="atspi_accessible_get_document_iface"
              shadowed-by="get_document">
        <doc xml:space="preserve">Gets the #AtspiDocument interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_editable_text"
              c:identifier="atspi_accessible_get_editable_text"
              shadows="get_editable_text_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiEditableText interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_editable_text_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_editable_text_iface"
              c:identifier="atspi_accessible_get_editable_text_iface"
              shadowed-by="get_editable_text">
        <doc xml:space="preserve">Gets the #AtspiEditableText interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_hyperlink"
              c:identifier="atspi_accessible_get_hyperlink">
        <doc xml:space="preserve">Gets the #AtspiHyperlink interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #AtspiHyperlink object associated with
         the given #AtspiAccessible, or NULL if not supported.</doc>
          <type name="Hyperlink" c:type="AtspiHyperlink*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_hypertext"
              c:identifier="atspi_accessible_get_hypertext"
              shadows="get_hypertext_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiHypertext interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_hypertext_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_hypertext_iface"
              c:identifier="atspi_accessible_get_hypertext_iface"
              shadowed-by="get_hypertext">
        <doc xml:space="preserve">Gets the #AtspiHypertext interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="atspi_accessible_get_id" throws="1">
        <doc xml:space="preserve">Gets the application id for a #AtspiAccessible object.
Only works on application root objects.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a positive #gint indicating the id for the #AtspiAccessible object
or -1 on exception.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_image"
              c:identifier="atspi_accessible_get_image"
              shadows="get_image_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiImage interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_image_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_image_iface"
              c:identifier="atspi_accessible_get_image_iface"
              shadowed-by="get_image">
        <doc xml:space="preserve">Gets the #AtspiImage interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_index_in_parent"
              c:identifier="atspi_accessible_get_index_in_parent"
              throws="1">
        <doc xml:space="preserve">Gets the index of an #AtspiAccessible object within its parent's
#AtspiAccessible children list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interfaces"
              c:identifier="atspi_accessible_get_interfaces">
        <doc xml:space="preserve">A set of pointers to all interfaces supported by an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_localized_role_name"
              c:identifier="atspi_accessible_get_localized_role_name"
              throws="1">
        <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="atspi_accessible_get_name"
              throws="1">
        <doc xml:space="preserve">Gets the name of an #AtspiAccessible object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_object_locale"
              c:identifier="atspi_accessible_get_object_locale"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="accessible" transfer-ownership="none">
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="atspi_accessible_get_parent"
              throws="1">
        <doc xml:space="preserve">Gets an #AtspiAccessible object's parent container.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_process_id"
              c:identifier="atspi_accessible_get_process_id"
              throws="1">
        <doc xml:space="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:space="preserve">The process ID or undetermined value if @error is set.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="accessible" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_relation_set"
              c:identifier="atspi_accessible_get_relation_set"
              throws="1">
        <doc xml:space="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:space="preserve">a #GArray of
         #AtspiRelation pointers or NULL on exception.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="Relation"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_role"
              c:identifier="atspi_accessible_get_role"
              throws="1">
        <doc xml:space="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:space="preserve">the #AtspiRole of an #AtspiAccessible object.</doc>
          <type name="Role" c:type="AtspiRole"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_role_name"
              c:identifier="atspi_accessible_get_role_name"
              throws="1">
        <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selection"
              c:identifier="atspi_accessible_get_selection"
              shadows="get_selection_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiSelection interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_selection_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selection_iface"
              c:identifier="atspi_accessible_get_selection_iface"
              shadowed-by="get_selection">
        <doc xml:space="preserve">Gets the #AtspiSelection interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_state_set"
              c:identifier="atspi_accessible_get_state_set">
        <doc xml:space="preserve">Gets the states currently held by an object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a pointer to an #AtspiStateSet representing an
object's current state set.</doc>
          <type name="StateSet" c:type="AtspiStateSet*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_table"
              c:identifier="atspi_accessible_get_table"
              shadows="get_table_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_table_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_table_cell"
              c:identifier="atspi_accessible_get_table_cell">
        <doc xml:space="preserve">Gets the #AtspiTableCell interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a pointer to an #AtspiTableCell interface instance,
         or NULL if @obj does not implement #AtspiTable.</doc>
          <type name="TableCell" c:type="AtspiTableCell*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_table_iface"
              c:identifier="atspi_accessible_get_table_iface"
              shadowed-by="get_table">
        <doc xml:space="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text"
              c:identifier="atspi_accessible_get_text"
              shadows="get_text_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_text_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text_iface"
              c:identifier="atspi_accessible_get_text_iface"
              shadowed-by="get_text">
        <doc xml:space="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_toolkit_name"
              c:identifier="atspi_accessible_get_toolkit_name"
              throws="1">
        <doc xml:space="preserve">Gets the toolkit name for an #AtspiAccessible object.
Only works on application root objects.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_toolkit_version"
              c:identifier="atspi_accessible_get_toolkit_version"
              throws="1">
        <doc xml:space="preserve">Gets the toolkit version for an #AtspiAccessible object.
Only works on application root objects.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible object on which to operate.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="atspi_accessible_get_value"
              shadows="get_value_iface"
              deprecated="1"
              deprecated-version="2.10">
        <doc xml:space="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_accessible_get_value_iface instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value_iface"
              c:identifier="atspi_accessible_get_value_iface"
              shadowed-by="get_value">
        <doc xml:space="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAccessible instance to query.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_cache_mask"
              c:identifier="atspi_accessible_set_cache_mask">
        <doc xml:space="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>
          <instance-parameter name="accessible" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiAccessible to operate on.  Must be the desktop or
            the root of an application.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </instance-parameter>
          <parameter name="mask" transfer-ownership="none">
            <doc xml:space="preserve">An #AtspiCache specifying a bit mask of the types of data to cache.</doc>
            <type name="Cache" 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>
      <field name="priv">
        <type name="AccessiblePrivate" c:type="AtspiAccessiblePrivate*"/>
      </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>
    <record name="AccessiblePrivate" c:type="AtspiAccessiblePrivate">
      <field name="cache" 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="cache_ref_count" writable="1">
        <type name="guint" c:type="guint"/>
      </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:space="preserve">Invoke the action indicated by #index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the action is successfully invoked, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="preserve">an integer specifying which action to invoke.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_action_description"
              c:identifier="atspi_action_get_action_description"
              shadowed-by="get_description"
              throws="1">
        <doc xml:space="preserve">Get the description of '@i-th' action invocable on an
     object implementing #AtspiAction.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a UTF-8 string describing the '@i-th' invocable action.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction implementor to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="preserve">an integer indicating which action to query.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_action_name"
              c:identifier="atspi_action_get_action_name"
              shadowed-by="get_name"
              throws="1">
        <doc xml:space="preserve">Get the name of the '@i-th' action invocable on an
     object implementing #AtspiAction.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the non-localized name of the action, as a UTF-8 string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction implementor to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="preserve">an integer indicating which action to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="atspi_action_get_description"
              shadows="get_action_description"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Get the description of '@i-th' action invocable on an
     object implementing #AtspiAction.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_action_get_action_description instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a UTF-8 string describing the '@i-th' invocable action.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction implementor to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="preserve">an integer indicating which action to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_key_binding"
              c:identifier="atspi_action_get_key_binding"
              throws="1">
        <doc xml:space="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
       "&amp;lt;Control&amp;gt;", "&amp;lt;Alt&amp;gt;", "&amp;lt;Shift&amp;gt;", "&amp;lt;Mod2&amp;gt;",
       etc. (we use the same string as gtk_accelerator_name() in
       gtk+-2.X.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction implementor to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Get the name of the '@i-th' action invocable on an
     object implementing #AtspiAction.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the name of the action, as a UTF-8 string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction implementor to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Get the number of actions invokable on an #AtspiAction implementor.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an integer indicating the number of invocable actions.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="atspi_action_get_name"
              shadows="get_action_name"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Get the name of the '@i-th' action invocable on an
     object implementing #AtspiAction.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_action_get_action_name instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the non-localized name of the action, as a UTF-8 string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiAction implementor to query.</doc>
            <type name="Action" c:type="AtspiAction*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="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">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiComponentLayer.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="COORD_TYPE_COUNT"
              value="2"
              c:type="ATSPI_COORD_TYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiCoordType.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <bitfield name="Cache"
              glib:type-name="AtspiCache"
              glib:get-type="atspi_cache_get_type"
              c:type="AtspiCache">
      <member name="none"
              value="0"
              c:identifier="ATSPI_CACHE_NONE"
              glib:nick="none">
      </member>
      <member name="parent"
              value="1"
              c:identifier="ATSPI_CACHE_PARENT"
              glib:nick="parent">
      </member>
      <member name="children"
              value="2"
              c:identifier="ATSPI_CACHE_CHILDREN"
              glib:nick="children">
      </member>
      <member name="name"
              value="4"
              c:identifier="ATSPI_CACHE_NAME"
              glib:nick="name">
      </member>
      <member name="description"
              value="8"
              c:identifier="ATSPI_CACHE_DESCRIPTION"
              glib:nick="description">
      </member>
      <member name="states"
              value="16"
              c:identifier="ATSPI_CACHE_STATES"
              glib:nick="states">
      </member>
      <member name="role"
              value="32"
              c:identifier="ATSPI_CACHE_ROLE"
              glib:nick="role">
      </member>
      <member name="interfaces"
              value="64"
              c:identifier="ATSPI_CACHE_INTERFACES"
              glib:nick="interfaces">
      </member>
      <member name="attributes"
              value="128"
              c:identifier="ATSPI_CACHE_ATTRIBUTES"
              glib:nick="attributes">
      </member>
      <member name="all"
              value="1073741823"
              c:identifier="ATSPI_CACHE_ALL"
              glib:nick="all">
      </member>
      <member name="default"
              value="127"
              c:identifier="ATSPI_CACHE_DEFAULT"
              glib:nick="default">
      </member>
      <member name="undefined"
              value="1073741824"
              c:identifier="ATSPI_CACHE_UNDEFINED"
              glib:nick="undefined">
      </member>
    </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"
              throws="1">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The active descendant of the given object.
Not yet implemented.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="collection" transfer-ownership="none">
            <type name="Collection" c:type="AtspiCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_matches"
              c:identifier="atspi_collection_get_matches"
              throws="1">
        <doc xml:space="preserve">Gets all #AtspiAccessible objects from the @collection matching a given
@rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">All
         #AtspiAccessible objects matching the given match rule.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve">A pointer to the #AtspiCollection to query.</doc>
            <type name="Collection" c:type="AtspiCollection*"/>
          </instance-parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:space="preserve">An #AtspiMatchRule describing the match criteria.</doc>
            <type name="MatchRule" c:type="AtspiMatchRule*"/>
          </parameter>
          <parameter name="sortby" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">Gets all #AtspiAccessible objects from the @collection, before
@current_object, matching a given @rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve">A pointer to the #AtspiCollection to query.</doc>
            <type name="Collection" c:type="AtspiCollection*"/>
          </instance-parameter>
          <parameter name="current_object" transfer-ownership="none">
            <doc xml:space="preserve">Upon reaching this object, searching should stop.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:space="preserve">An #AtspiMatchRule describing the match criteria.</doc>
            <type name="MatchRule" c:type="AtspiMatchRule*"/>
          </parameter>
          <parameter name="sortby" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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:space="preserve">Gets all #AtspiAccessible objects from the @collection, after
@current_object, matching a given @rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve">A pointer to the #AtspiCollection to query.</doc>
            <type name="Collection" c:type="AtspiCollection*"/>
          </instance-parameter>
          <parameter name="current_object" transfer-ownership="none">
            <doc xml:space="preserve">The object at which to start searching.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:space="preserve">An #AtspiMatchRule describing the match criteria.</doc>
            <type name="MatchRule" c:type="AtspiMatchRule*"/>
          </parameter>
          <parameter name="sortby" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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:space="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:space="preserve">Not yet implemented.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="collection" transfer-ownership="none">
            <type name="Collection" c:type="AtspiCollection*"/>
          </instance-parameter>
          <parameter name="test" transfer-ownership="none">
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <enumeration name="CollectionMatchType"
                 glib:type-name="AtspiCollectionMatchType"
                 glib:get-type="atspi_collection_match_type_get_type"
                 c:type="AtspiCollectionMatchType">
      <doc xml:space="preserve">Enumeration used by #AtspiMatchRule to specify
how to interpret #AtspiAccessible objects.</doc>
      <member name="invalid"
              value="0"
              c:identifier="ATSPI_Collection_MATCH_INVALID"
              glib:nick="invalid">
        <doc xml:space="preserve">Indicates an error condition or
uninitialized value.</doc>
      </member>
      <member name="all"
              value="1"
              c:identifier="ATSPI_Collection_MATCH_ALL"
              glib:nick="all">
        <doc xml:space="preserve">#TRUE if all of the criteria are met.</doc>
      </member>
      <member name="any"
              value="2"
              c:identifier="ATSPI_Collection_MATCH_ANY"
              glib:nick="any">
        <doc xml:space="preserve">#TRUE if any of the criteria are met.</doc>
      </member>
      <member name="none"
              value="3"
              c:identifier="ATSPI_Collection_MATCH_NONE"
              glib:nick="none">
        <doc xml:space="preserve">#TRUE if none of the criteria are met.</doc>
      </member>
      <member name="empty"
              value="4"
              c:identifier="ATSPI_Collection_MATCH_EMPTY"
              glib:nick="empty">
        <doc xml:space="preserve">Same as @ATSPI_Collection_MATCH_ALL if
the criteria is non-empty; for empty criteria this rule requires returned
value to also have empty set.</doc>
      </member>
      <member name="last_defined"
              value="5"
              c:identifier="ATSPI_Collection_MATCH_LAST_DEFINED"
              glib:nick="last-defined">
        <doc xml:space="preserve">Used only to determine the end of the
enumeration.</doc>
      </member>
    </enumeration>
    <enumeration name="CollectionSortOrder"
                 glib:type-name="AtspiCollectionSortOrder"
                 glib:get-type="atspi_collection_sort_order_get_type"
                 c:type="AtspiCollectionSortOrder">
      <doc xml:space="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"
              glib:nick="invalid">
      </member>
      <member name="canonical"
              value="1"
              c:identifier="ATSPI_Collection_SORT_ORDER_CANONICAL"
              glib:nick="canonical">
      </member>
      <member name="flow"
              value="2"
              c:identifier="ATSPI_Collection_SORT_ORDER_FLOW"
              glib:nick="flow">
      </member>
      <member name="tab"
              value="3"
              c:identifier="ATSPI_Collection_SORT_ORDER_TAB"
              glib:nick="tab">
      </member>
      <member name="reverse_canonical"
              value="4"
              c:identifier="ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL"
              glib:nick="reverse-canonical">
      </member>
      <member name="reverse_flow"
              value="5"
              c:identifier="ATSPI_Collection_SORT_ORDER_REVERSE_FLOW"
              glib:nick="reverse-flow">
      </member>
      <member name="reverse_tab"
              value="6"
              c:identifier="ATSPI_Collection_SORT_ORDER_REVERSE_TAB"
              glib:nick="reverse-tab">
      </member>
      <member name="last_defined"
              value="7"
              c:identifier="ATSPI_Collection_SORT_ORDER_LAST_DEFINED"
              glib:nick="last-defined">
      </member>
    </enumeration>
    <enumeration name="CollectionTreeTraversalType"
                 glib:type-name="AtspiCollectionTreeTraversalType"
                 glib:get-type="atspi_collection_tree_traversal_type_get_type"
                 c:type="AtspiCollectionTreeTraversalType">
      <doc xml:space="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"
              glib:nick="restrict-children">
      </member>
      <member name="restrict_sibling"
              value="1"
              c:identifier="ATSPI_Collection_TREE_RESTRICT_SIBLING"
              glib:nick="restrict-sibling">
      </member>
      <member name="inorder"
              value="2"
              c:identifier="ATSPI_Collection_TREE_INORDER"
              glib:nick="inorder">
      </member>
      <member name="last_defined"
              value="3"
              c:identifier="ATSPI_Collection_TREE_LAST_DEFINED"
              glib:nick="last-defined">
      </member>
    </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:space="preserve">Queries whether a given #AtspiComponent contains a particular point.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the specified component contains the point (@x, @y),
         #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">Gets the accessible child at a given coordinate within an #AtspiComponent.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">Gets the opacity/alpha value of a component, if alpha blending is in use.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiComponent to be queried.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_extents"
              c:identifier="atspi_component_get_extents"
              throws="1">
        <doc xml:space="preserve">Gets the bounding box of the specified #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #AtspiRect giving the accessible's extents.</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">the #AtspiComponentLayer into which this component is painted.</doc>
          <type name="ComponentLayer" c:type="AtspiComponentLayer"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mdi_z_order"
              c:identifier="atspi_component_get_mdi_z_order"
              throws="1">
        <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_position"
              c:identifier="atspi_component_get_position"
              throws="1">
        <doc xml:space="preserve">Gets the minimum x and y coordinates of the specified #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #AtspiPoint giving the @obj's position.</doc>
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the size of the specified #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #AtspiPoint giving the @obj's size.</doc>
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="grab_focus"
              c:identifier="atspi_component_grab_focus"
              throws="1">
        <doc xml:space="preserve">Attempts to set the keyboard input focus to the specified
        #AtspiComponent.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent on which to operate.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_extents"
              c:identifier="atspi_component_set_extents"
              throws="1">
        <doc xml:space="preserve">Moves and resizes the specified component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to move.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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:space="preserve">the coordinate system in which the position is specified.
        (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_position"
              c:identifier="atspi_component_set_position"
              throws="1">
        <doc xml:space="preserve">Moves the component to the specified position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to move.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">the coordinate system in which the position is specified.
        (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size"
              c:identifier="atspi_component_set_size"
              throws="1">
        <doc xml:space="preserve">Resizes the specified component to the given coordinates.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiComponent to query.</doc>
            <type name="Component" c:type="AtspiComponent*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="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:space="preserve">the height to which the component should be resized.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <enumeration name="ComponentLayer"
                 glib:type-name="AtspiComponentLayer"
                 glib:get-type="atspi_component_layer_get_type"
                 c:type="AtspiComponentLayer">
      <doc xml:space="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"
              glib:nick="invalid">
        <doc xml:space="preserve">Indicates an error condition or uninitialized value.</doc>
      </member>
      <member name="background"
              value="1"
              c:identifier="ATSPI_LAYER_BACKGROUND"
              glib:nick="background">
        <doc xml:space="preserve">The bottom-most layer, over which everything else
is painted.        The 'desktop background' is generally in this layer.</doc>
      </member>
      <member name="canvas"
              value="2"
              c:identifier="ATSPI_LAYER_CANVAS"
              glib:nick="canvas">
        <doc xml:space="preserve">The 'background' layer for most content renderers and
UI #AtspiComponent containers.</doc>
      </member>
      <member name="widget"
              value="3"
              c:identifier="ATSPI_LAYER_WIDGET"
              glib:nick="widget">
        <doc xml:space="preserve">The layer in which the majority of ordinary
'foreground' widgets reside.</doc>
      </member>
      <member name="mdi"
              value="4"
              c:identifier="ATSPI_LAYER_MDI"
              glib:nick="mdi">
        <doc xml:space="preserve">A special layer between @ATSPI_LAYER_CANVAS and
@ATSPI_LAYER_WIDGET, in which the 'pseudo windows' (e.g. the MDI frames)
reside. See #atspi_component_get_mdi_z_order.</doc>
      </member>
      <member name="popup"
              value="5"
              c:identifier="ATSPI_LAYER_POPUP"
              glib:nick="popup">
        <doc xml:space="preserve">A layer for popup window content, above
@ATSPI_LAYER_WIDGET.</doc>
      </member>
      <member name="overlay"
              value="6"
              c:identifier="ATSPI_LAYER_OVERLAY"
              glib:nick="overlay">
        <doc xml:space="preserve">The topmost layer.</doc>
      </member>
      <member name="window"
              value="7"
              c:identifier="ATSPI_LAYER_WINDOW"
              glib:nick="window">
        <doc xml:space="preserve">The layer in which a toplevel window background usually
resides.</doc>
      </member>
      <member name="last_defined"
              value="8"
              c:identifier="ATSPI_LAYER_LAST_DEFINED"
              glib:nick="last-defined">
        <doc xml:space="preserve">Used only to determine the end of the
enumeration.</doc>
      </member>
    </enumeration>
    <enumeration name="CoordType"
                 glib:type-name="AtspiCoordType"
                 glib:get-type="atspi_coord_type_get_type"
                 c:type="AtspiCoordType">
      <doc xml:space="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"
              glib:nick="screen">
        <doc xml:space="preserve">Specifies xy coordinates relative to the screen.</doc>
      </member>
      <member name="window"
              value="1"
              c:identifier="ATSPI_COORD_TYPE_WINDOW"
              glib:nick="window">
        <doc xml:space="preserve">Specifies xy coordinates relative to the widget's
top-level window.</doc>
      </member>
    </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_TABLE_CELL"
              value="org.a11y.atspi.TableCell"
              c:type="ATSPI_DBUS_INTERFACE_TABLE_CELL">
      <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"
            glib:type-name="AtspiDeviceEvent"
            glib:get-type="atspi_device_event_get_type"
            c:symbol-prefix="device_event">
      <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:space="preserve">Creates a new #AtspiDeviceListener with a specified callback function.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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:space="preserve">an #AtspiDeviceListenerCB callback function,
           or NULL.</doc>
            <type name="DeviceListenerCB" c:type="AtspiDeviceListenerCB"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="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:space="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"
                   introspectable="0">
        <doc xml:space="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:space="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:space="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:space="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>
          <instance-parameter name="listener" transfer-ownership="none">
            <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
          </instance-parameter>
          <parameter name="event" 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:space="preserve">Adds an in-process callback function to an existing #AtspiDeviceListener.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="listener" transfer-ownership="none">
            <doc xml:space="preserve">the #AtspiDeviceListener instance to modify.</doc>
            <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="1">
            <doc xml:space="preserve">an #AtspiDeviceListenerCB function pointer.</doc>
            <type name="DeviceListenerCB" c:type="AtspiDeviceListenerCB"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="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:space="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:space="preserve">Removes an in-process callback function from an existing
#AtspiDeviceListener.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="listener" transfer-ownership="none">
            <doc xml:space="preserve">the #AtspiDeviceListener instance to modify.</doc>
            <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
          </instance-parameter>
          <parameter name="callback" transfer-ownership="none" scope="call">
            <doc xml:space="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:space="preserve">A callback function prototype via which clients receive device event notifications.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="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:space="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:space="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 name="listener" transfer-ownership="none">
              <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="DeviceEvent" c:type="const AtspiDeviceEvent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <callback name="DeviceListenerSimpleCB"
              c:type="AtspiDeviceListenerSimpleCB">
      <doc xml:space="preserve">Similar to #AtspiDeviceListenerCB, but with no user data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="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:space="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"
              shadows="get_document_attribute_value"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Gets the value of a single attribute, if specified for the document as a whole.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_document_get_document_attribute_value instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object on which to operate.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <doc xml:space="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"
              shadows="get_document_attributes"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="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>
        <doc-deprecated xml:space="preserve">Use atspi_document_get_document_attributes instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object on which to operate.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current_page_number"
              c:identifier="atspi_document_get_current_page_number"
              throws="1">
        <doc xml:space="preserve">Gets the current page number of an #AccessibleDocument object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #gint indicating the current page number in the
#AccessibleDocument object.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object to query.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_document_attribute_value"
              c:identifier="atspi_document_get_document_attribute_value"
              shadowed-by="get_attribute_value"
              throws="1">
        <doc xml:space="preserve">Gets the value of a single attribute, if specified for the document as a whole.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object on which to operate.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <doc xml:space="preserve">a string indicating the name of a specific attribute.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_document_attributes"
              c:identifier="atspi_document_get_document_attributes"
              shadowed-by="get_attributes"
              throws="1">
        <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object on which to operate.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_locale"
              c:identifier="atspi_document_get_locale"
              throws="1">
        <doc xml:space="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:space="preserve">a string compliant with the POSIX standard for locale description.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object on which to operate.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_page_count"
              c:identifier="atspi_document_get_page_count"
              throws="1">
        <doc xml:space="preserve">Gets the page count of an #AccessibleDocument object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #gint indicating the page count of an
#AccessibleDocument object.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiDocument object to query.</doc>
            <type name="Document" c:type="AtspiDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
    </interface>
    <constant name="EVENTTYPE_COUNT" value="4" c:type="ATSPI_EVENTTYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiEventType.</doc>
      <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:space="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:space="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiEditableText object to modify.</doc>
            <type name="EditableText" c:type="AtspiEditableText*"/>
          </instance-parameter>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">#TRUE if operation was successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiEditableText object to modify.</doc>
            <type name="EditableText" c:type="AtspiEditableText*"/>
          </instance-parameter>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiEditableText object to modify.</doc>
            <type name="EditableText" c:type="AtspiEditableText*"/>
          </instance-parameter>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiEditableText object to modify.</doc>
            <type name="EditableText" c:type="AtspiEditableText*"/>
          </instance-parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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:space="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiEditableText object to modify.</doc>
            <type name="EditableText" c:type="AtspiEditableText*"/>
          </instance-parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Replace the entire text contents of an #AtspiEditableText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiEditableText object to modify.</doc>
            <type name="EditableText" c:type="AtspiEditableText*"/>
          </instance-parameter>
          <parameter name="new_contents" transfer-ownership="none">
            <doc xml:space="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>
      <member name="ipc" value="1" c:identifier="ATSPI_ERROR_IPC">
      </member>
      <member name="sync_not_allowed"
              value="2"
              c:identifier="ATSPI_ERROR_SYNC_NOT_ALLOWED">
      </member>
    </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:space="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:space="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:space="preserve">Creates a new #AtspiEventListener associated with a specified @callback.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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:space="preserve">An #AtspiEventListenerCB 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:space="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:space="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"
                   introspectable="0">
        <doc xml:space="preserve">Creates a new #AtspiEventListener associated with a specified @callback.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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:space="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:space="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:space="preserve">Deregisters an #AtspiEventListenerCB from the registry, for a specific
            event type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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:space="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:space="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:space="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"
                introspectable="0"
                throws="1">
        <doc xml:space="preserve">deregisters an #AtspiEventListenerSimpleCB from the registry, for a specific
            event type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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:space="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:space="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:space="preserve">Registers an #AtspiEventListenerCB against an @event_type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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:space="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:space="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:space="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:space="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_from_callback_full"
                c:identifier="atspi_event_listener_register_from_callback_full"
                introspectable="0"
                throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <type name="EventListenerCB" c:type="AtspiEventListenerCB"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="event_type" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties" transfer-ownership="none">
            <array name="GLib.Array" c:type="GArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="register_no_data"
                c:identifier="atspi_event_listener_register_no_data"
                introspectable="0"
                throws="1">
        <doc xml:space="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:space="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:space="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:space="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:space="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:space="preserve">Deregisters an #AtspiEventListener from the registry, for a specific
            event type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="listener" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiEventListener to deregister.</doc>
            <type name="EventListener" c:type="AtspiEventListener*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="listener" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiEventListener to register against an event type.</doc>
            <type name="EventListener" c:type="AtspiEventListener*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:space="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>
      <method name="register_full"
              c:identifier="atspi_event_listener_register_full"
              throws="1">
        <doc xml:space="preserve">Adds an in-process callback function to an existing #AtspiEventListener.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="listener" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiEventListener to register against an event type.</doc>
            <type name="EventListener" c:type="AtspiEventListener*"/>
          </instance-parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:space="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 and legal event types.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a list of
            properties that should be sent along with the event. The
            properties are valued for the duration of the event callback.k
            TODO: Document.</doc>
            <array name="GLib.Array" c:type="GArray*">
              <type name="utf8"/>
            </array>
          </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:space="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:space="preserve">The event for which notification is sent.</doc>
          <type name="Event" c:type="AtspiEvent*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="1">
          <doc xml:space="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:space="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:space="preserve">The event for which notification is sent.</doc>
          <type name="Event" c:type="const AtspiEvent*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="EventType"
                 glib:type-name="AtspiEventType"
                 glib:get-type="atspi_event_type_get_type"
                 c:type="AtspiEventType">
      <doc xml:space="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"
              glib:nick="key-pressed-event">
        <doc xml:space="preserve">Indicates that a key on a keyboard device was
pressed.</doc>
      </member>
      <member name="key_released_event"
              value="1"
              c:identifier="ATSPI_KEY_RELEASED_EVENT"
              glib:nick="key-released-event">
        <doc xml:space="preserve">Indicates that a key on a keyboard device was
released.</doc>
      </member>
      <member name="button_pressed_event"
              value="2"
              c:identifier="ATSPI_BUTTON_PRESSED_EVENT"
              glib:nick="button-pressed-event">
        <doc xml:space="preserve">Indicates that a button on a non-keyboard
human interface device (HID) was pressed.</doc>
      </member>
      <member name="button_released_event"
              value="3"
              c:identifier="ATSPI_BUTTON_RELEASED_EVENT"
              glib:nick="button-released-event">
        <doc xml:space="preserve">Indicates that a button on a non-keyboard
human interface device (HID) was released.</doc>
      </member>
    </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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink implementor on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_index_range"
              c:identifier="atspi_hyperlink_get_index_range"
              throws="1">
        <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink implementor on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_anchors"
              c:identifier="atspi_hyperlink_get_n_anchors"
              throws="1">
        <doc xml:space="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:space="preserve">a #gint indicating the number of anchors in this hyperlink.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink object on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_object"
              c:identifier="atspi_hyperlink_get_object"
              throws="1">
        <doc xml:space="preserve">Gets the object associated with a particular hyperlink anchor, as an
#AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink implementor on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink implementor on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uri" c:identifier="atspi_hyperlink_get_uri" throws="1">
        <doc xml:space="preserve">Gets the URI associated with a particular hyperlink anchor.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a UTF-8 string giving the URI of the @ith hyperlink anchor.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink implementor on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Tells whether an #AtspiHyperlink object is still valid with respect to its
         originating hypertext object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHyperlink on which to operate.</doc>
            <type name="Hyperlink" c:type="AtspiHyperlink*"/>
          </instance-parameter>
        </parameters>
      </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:space="preserve">Gets the #AtspiHyperlink object at a specified index.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">the #AtspiHyperlink object
         specified by @link_index.</doc>
          <type name="Hyperlink" c:type="AtspiHyperlink*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHypertext implementor on which to operate.</doc>
            <type name="Hypertext" c:type="AtspiHypertext*"/>
          </instance-parameter>
          <parameter name="link_index" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the index of the #AtspiHyperlink object at a specified
       character offset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHypertext implementor on which to operate.</doc>
            <type name="Hypertext" c:type="AtspiHypertext*"/>
          </instance-parameter>
          <parameter name="character_offset" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the total number of #AtspiHyperlink objects that an
#AtspiHypertext implementor has.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiHypertext implementor on which to operate.</doc>
            <type name="Hypertext" c:type="AtspiHypertext*"/>
          </instance-parameter>
        </parameters>
      </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:space="preserve">Gets the description of the image displayed in an #AtspiImage object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a UTF-8 string describing the image.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiImage implementor on which to operate.</doc>
            <type name="Image" c:type="AtspiImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_image_extents"
              c:identifier="atspi_image_get_image_extents"
              throws="1">
        <doc xml:space="preserve">Gets the bounding box of the image displayed in a
        specified #AtspiImage implementor.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiImage implementor to query.</doc>
            <type name="Image" c:type="AtspiImage*"/>
          </instance-parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the locale associated with an image and its textual representation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A POSIX LC_MESSAGES-style locale value for image description and text.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiImage to query.</doc>
            <type name="Image" c:type="AtspiImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_image_position"
              c:identifier="atspi_image_get_image_position"
              throws="1">
        <doc xml:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiImage implementor to query.</doc>
            <type name="Image" c:type="AtspiImage*"/>
          </instance-parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the size of the image displayed in a specified #AtspiImage object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiImage to query.</doc>
            <type name="Image" c:type="AtspiImage*"/>
          </instance-parameter>
        </parameters>
      </method>
    </interface>
    <constant name="KEYEVENTTYPE_COUNT"
              value="2"
              c:type="ATSPI_KEYEVENTTYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiKeyEventType.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="KEYSYNTHTYPE_COUNT"
              value="5"
              c:type="ATSPI_KEYSYNTHTYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiKeySynthType.</doc>
      <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"
                 glib:type-name="AtspiKeyEventType"
                 glib:get-type="atspi_key_event_type_get_type"
                 c:type="AtspiKeyEventType">
      <doc xml:space="preserve">Deprecated. Should not be used.</doc>
      <member name="pressed"
              value="0"
              c:identifier="ATSPI_KEY_PRESSED"
              glib:nick="pressed">
      </member>
      <member name="released"
              value="1"
              c:identifier="ATSPI_KEY_RELEASED"
              glib:nick="released">
      </member>
    </enumeration>
    <bitfield name="KeyListenerSyncType"
              glib:type-name="AtspiKeyListenerSyncType"
              glib:get-type="atspi_key_listener_sync_type_get_type"
              c:type="AtspiKeyListenerSyncType">
      <doc xml:space="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"
              glib:nick="nosync">
        <doc xml:space="preserve">Events may be delivered asynchronously,
which means in some cases they may already have been delivered to the
application before the AT client receives the notification.</doc>
      </member>
      <member name="synchronous"
              value="1"
              c:identifier="ATSPI_KEYLISTENER_SYNCHRONOUS"
              glib:nick="synchronous">
        <doc xml:space="preserve">Events are delivered synchronously, before the
currently focussed application sees them.</doc>
      </member>
      <member name="canconsume"
              value="2"
              c:identifier="ATSPI_KEYLISTENER_CANCONSUME"
              glib:nick="canconsume">
        <doc xml:space="preserve">Events may be consumed by the AT client.  Presumes and
requires #ATSPI_KEYLISTENER_SYNCHRONOUS, incompatible with #ATSPI_KEYLISTENER_NOSYNC.</doc>
      </member>
      <member name="all_windows"
              value="4"
              c:identifier="ATSPI_KEYLISTENER_ALL_WINDOWS"
              glib:nick="all-windows">
        <doc xml:space="preserve">Events are received not from the application toolkit layer, but
from the device driver or windowing system subsystem; such notifications are 'global' in the
sense that they are not broken or defeated by applications that participate poorly
in the accessibility APIs, or not at all; however because of the intrusive nature of
such snooping, it can have side-effects on certain older platforms.  If unconditional
event notifications, even when inaccessible or "broken" applications have focus, are not
required, it may be best to avoid this enum value/flag.</doc>
      </member>
    </bitfield>
    <record name="KeySet" c:type="AtspiKeySet">
      <doc xml:space="preserve">Structure containing identifying information about a set of keycode or
       keysyms.</doc>
      <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>
    <enumeration name="KeySynthType"
                 glib:type-name="AtspiKeySynthType"
                 glib:get-type="atspi_key_synth_type_get_type"
                 c:type="AtspiKeySynthType">
      <doc xml:space="preserve">Enumeration used when synthesizing keyboard input via
#atspi_generate_keyboard_event.</doc>
      <member name="press"
              value="0"
              c:identifier="ATSPI_KEY_PRESS"
              glib:nick="press">
        <doc xml:space="preserve">Emulates the pressing of a hardware keyboard key.</doc>
      </member>
      <member name="release"
              value="1"
              c:identifier="ATSPI_KEY_RELEASE"
              glib:nick="release">
        <doc xml:space="preserve">Emulates the release of a hardware keyboard key.</doc>
      </member>
      <member name="pressrelease"
              value="2"
              c:identifier="ATSPI_KEY_PRESSRELEASE"
              glib:nick="pressrelease">
        <doc xml:space="preserve">Emulates the pressing and immediate releasing
of a hardware keyboard key.</doc>
      </member>
      <member name="sym"
              value="3"
              c:identifier="ATSPI_KEY_SYM"
              glib:nick="sym">
        <doc xml:space="preserve">A symbolic key event is generated, without specifying a
hardware key. Note: if the keysym is not present in the current keyboard
map, the #AtspiDeviceEventController instance has a limited ability to
generate such keysyms on-the-fly. Reliability of GenerateKeyboardEvent
calls using out-of-keymap keysyms will vary from system to system, and on
the number of different out-of-keymap keysyms being generated in quick
succession.
In practice this is rarely significant, since the keysyms of interest to
AT clients and keyboard emulators are usually part of the current keymap,
i.e., present on the system keyboard for the current locale (even if a
physical hardware keyboard is not connected).</doc>
      </member>
      <member name="string"
              value="4"
              c:identifier="ATSPI_KEY_STRING"
              glib:nick="string">
        <doc xml:space="preserve">A string is converted to its equivalent keyboard events
and emitted. If the string consists of complex characters or composed
characters which are not in the current keymap, string emission is
subject to the out-of-keymap limitations described for
@ATSPI_KEY_SYM. In practice this limitation primarily effects
Chinese and Japanese locales.</doc>
      </member>
    </enumeration>
    <enumeration name="LocaleType"
                 glib:type-name="AtspiLocaleType"
                 glib:get-type="atspi_locale_type_get_type"
                 c:type="AtspiLocaleType">
      <doc xml:space="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"
              glib:nick="messages">
        <doc xml:space="preserve">For localizable natural-language messages.</doc>
      </member>
      <member name="collate"
              value="1"
              c:identifier="ATSPI_LOCALE_TYPE_COLLATE"
              glib:nick="collate">
        <doc xml:space="preserve">For regular expression matching and string
collation.</doc>
      </member>
      <member name="ctype"
              value="2"
              c:identifier="ATSPI_LOCALE_TYPE_CTYPE"
              glib:nick="ctype">
        <doc xml:space="preserve">For regular expression matching, character
classification, conversion, case-sensitive comparison, and wide character
functions.</doc>
      </member>
      <member name="monetary"
              value="3"
              c:identifier="ATSPI_LOCALE_TYPE_MONETARY"
              glib:nick="monetary">
        <doc xml:space="preserve">For monetary formatting.</doc>
      </member>
      <member name="numeric"
              value="4"
              c:identifier="ATSPI_LOCALE_TYPE_NUMERIC"
              glib:nick="numeric">
        <doc xml:space="preserve">For number formatting (such as the decimal
point and the thousands separator).</doc>
      </member>
      <member name="time"
              value="5"
              c:identifier="ATSPI_LOCALE_TYPE_TIME"
              glib:nick="time">
        <doc xml:space="preserve">For time and date formatting.</doc>
      </member>
    </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">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiModifierType.</doc>
      <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:space="preserve">Creates a new #AtspiMatchRule with specified @states, @attributes,
@interfaces, and @roles.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #AtspiMatchRule.</doc>
          <type name="MatchRule" c:type="AtspiMatchRule*"/>
        </return-value>
        <parameters>
          <parameter name="states" transfer-ownership="none">
            <doc xml:space="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:space="preserve">An #AtspiCollectionMatchType specifying how to interpret
         @states.</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="attributes" transfer-ownership="none">
            <doc xml:space="preserve">A #GHashTable specifying
         attributes to match. To specify multiple attribute values,
         separate each value with a :: If an attribute value contains a :,
         then it can be escaped by preceding it with a \. A backslash can
         likewise be escaped by inserting a double backslash.</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="attributematchtype" transfer-ownership="none">
            <doc xml:space="preserve">An #AtspiCollectionMatchType specifying how to
         interpret @attributes.</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="roles" transfer-ownership="none">
            <doc xml:space="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:space="preserve">An #AtspiCollectionMatchType specifying how to
         interpret @roles.</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="interfaces" transfer-ownership="none">
            <doc xml:space="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:space="preserve">An #AtspiCollectionMatchType specifying how to
         interpret @interfaces.</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="invert" transfer-ownership="none">
            <doc xml:space="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"
                 glib:type-name="AtspiModifierType"
                 glib:get-type="atspi_modifier_type_get_type"
                 c:type="AtspiModifierType">
      <member name="shift"
              value="0"
              c:identifier="ATSPI_MODIFIER_SHIFT"
              glib:nick="shift">
        <doc xml:space="preserve">The left or right 'Shift' key.</doc>
      </member>
      <member name="shiftlock"
              value="1"
              c:identifier="ATSPI_MODIFIER_SHIFTLOCK"
              glib:nick="shiftlock">
        <doc xml:space="preserve">The ShiftLock or CapsLock key.</doc>
      </member>
      <member name="control"
              value="2"
              c:identifier="ATSPI_MODIFIER_CONTROL"
              glib:nick="control">
        <doc xml:space="preserve">'Control'/'Ctrl'.</doc>
      </member>
      <member name="alt"
              value="3"
              c:identifier="ATSPI_MODIFIER_ALT"
              glib:nick="alt">
        <doc xml:space="preserve">The Alt key (as opposed to AltGr).</doc>
      </member>
      <member name="meta"
              value="4"
              c:identifier="ATSPI_MODIFIER_META"
              glib:nick="meta">
        <doc xml:space="preserve">Depending on the platform, this may map to 'Window',
'Function', 'Meta', 'Menu', or 'NumLock'. Such 'Meta keys' will
map to one of META, META2, META3. On X Windows platforms these META
values map to the modifier masks Mod1Mask, Mod2Mask, Mod3Mask, e.g. an
event having @ATSPI_MODIFIER_META2 means that the 'Mod2Mask' bit
is set in the corresponding XEvent.</doc>
      </member>
      <member name="meta2"
              value="5"
              c:identifier="ATSPI_MODIFIER_META2"
              glib:nick="meta2">
        <doc xml:space="preserve">See @ATSPI_MODIFIER_META.</doc>
      </member>
      <member name="meta3"
              value="6"
              c:identifier="ATSPI_MODIFIER_META3"
              glib:nick="meta3">
        <doc xml:space="preserve">See @ATSPI_MODIFIER_META.</doc>
      </member>
      <member name="numlock"
              value="14"
              c:identifier="ATSPI_MODIFIER_NUMLOCK"
              glib:nick="numlock">
        <doc xml:space="preserve">A symbolic meta key name that is mapped by AT-SPI
to the appropriate META value, for the convenience of the client.</doc>
      </member>
    </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>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <type name="Point" c:type="AtspiPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <constant name="RELATIONTYPE_COUNT"
              value="20"
              c:type="ATSPI_RELATIONTYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiRelationType.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="ROLE_COUNT" value="122" c:type="ATSPI_ROLE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiRole.</doc>
      <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:space="preserve">Gets a copy of an #AtspiRange object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #AtspiRange copy of an #AtspiRange object.</doc>
          <type name="Range" c:type="AtspiRange*"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the source #AtspiRange object that will be copied.</doc>
            <type name="Range" c:type="AtspiRange*"/>
          </instance-parameter>
        </parameters>
      </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>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <type name="Rect" c:type="AtspiRect*"/>
          </instance-parameter>
        </parameters>
      </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:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiRelation object to query.</doc>
            <type name="Relation" c:type="AtspiRelation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_relation_type"
              c:identifier="atspi_relation_get_relation_type">
        <doc xml:space="preserve">Gets the type of relationship represented by an #AtspiRelation.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #AtspiRelationType indicating the type of relation
        encapsulated in this #AtspiRelation object.</doc>
          <type name="RelationType" c:type="AtspiRelationType"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiRelation object to query.</doc>
            <type name="Relation" c:type="AtspiRelation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_target" c:identifier="atspi_relation_get_target">
        <doc xml:space="preserve">Gets the @i-th target of a specified #AtspiRelation relationship.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiRelation object to query.</doc>
            <type name="Relation" c:type="AtspiRelation*"/>
          </instance-parameter>
          <parameter name="i" transfer-ownership="none">
            <doc xml:space="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"
                 glib:type-name="AtspiRelationType"
                 glib:get-type="atspi_relation_type_get_type"
                 c:type="AtspiRelationType">
      <doc xml:space="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"
              glib:nick="null">
        <doc xml:space="preserve">Not a meaningful relationship; clients should not
normally encounter this #AtspiRelationType value.</doc>
      </member>
      <member name="label_for"
              value="1"
              c:identifier="ATSPI_RELATION_LABEL_FOR"
              glib:nick="label-for">
        <doc xml:space="preserve">Object is a label for one or more other objects.</doc>
      </member>
      <member name="labelled_by"
              value="2"
              c:identifier="ATSPI_RELATION_LABELLED_BY"
              glib:nick="labelled-by">
        <doc xml:space="preserve">Object is labelled by one or more other
objects.</doc>
      </member>
      <member name="controller_for"
              value="3"
              c:identifier="ATSPI_RELATION_CONTROLLER_FOR"
              glib:nick="controller-for">
        <doc xml:space="preserve">Object is an interactive object which
modifies the state, onscreen location, or other attributes of one or more
target objects.</doc>
      </member>
      <member name="controlled_by"
              value="4"
              c:identifier="ATSPI_RELATION_CONTROLLED_BY"
              glib:nick="controlled-by">
        <doc xml:space="preserve">Object state, position, etc. is
modified/controlled by user interaction with one or more other objects.
For instance a viewport or scroll pane may be @ATSPI_RELATION_CONTROLLED_BY
scrollbars.</doc>
      </member>
      <member name="member_of"
              value="5"
              c:identifier="ATSPI_RELATION_MEMBER_OF"
              glib:nick="member-of">
        <doc xml:space="preserve">Object has a grouping relationship (e.g. 'same
group as') to one or more other objects.</doc>
      </member>
      <member name="tooltip_for"
              value="6"
              c:identifier="ATSPI_RELATION_TOOLTIP_FOR"
              glib:nick="tooltip-for">
        <doc xml:space="preserve">Object is a tooltip associated with another
object.</doc>
      </member>
      <member name="node_child_of"
              value="7"
              c:identifier="ATSPI_RELATION_NODE_CHILD_OF"
              glib:nick="node-child-of">
        <doc xml:space="preserve">Object is a child of the target.</doc>
      </member>
      <member name="node_parent_of"
              value="8"
              c:identifier="ATSPI_RELATION_NODE_PARENT_OF"
              glib:nick="node-parent-of">
        <doc xml:space="preserve">Object is a parent of the target.</doc>
      </member>
      <member name="extended"
              value="9"
              c:identifier="ATSPI_RELATION_EXTENDED"
              glib:nick="extended">
        <doc xml:space="preserve">Used to indicate that a relationship exists, but
its type is not specified in the enumeration.</doc>
      </member>
      <member name="flows_to"
              value="10"
              c:identifier="ATSPI_RELATION_FLOWS_TO"
              glib:nick="flows-to">
        <doc xml:space="preserve">Object renders content which flows logically to
another object. For instance, text in a paragraph may flow to another
object which is not the 'next sibling' in the accessibility hierarchy.</doc>
      </member>
      <member name="flows_from"
              value="11"
              c:identifier="ATSPI_RELATION_FLOWS_FROM"
              glib:nick="flows-from">
        <doc xml:space="preserve">Reciprocal of @ATSPI_RELATION_FLOWS_TO.</doc>
      </member>
      <member name="subwindow_of"
              value="12"
              c:identifier="ATSPI_RELATION_SUBWINDOW_OF"
              glib:nick="subwindow-of">
        <doc xml:space="preserve">Object is visually and semantically considered
a subwindow of another object, even though it is not the object's child.
Useful when dealing with embedded applications and other cases where the
widget hierarchy does not map cleanly to the onscreen presentation.</doc>
      </member>
      <member name="embeds"
              value="13"
              c:identifier="ATSPI_RELATION_EMBEDS"
              glib:nick="embeds">
        <doc xml:space="preserve">Similar to @ATSPI_RELATION_SUBWINDOW_OF, but
specifically used for cross-process embedding.</doc>
      </member>
      <member name="embedded_by"
              value="14"
              c:identifier="ATSPI_RELATION_EMBEDDED_BY"
              glib:nick="embedded-by">
        <doc xml:space="preserve">Reciprocal of @ATSPI_RELATION_EMBEDS. Used to
denote content rendered by embedded renderers that live in a separate process
space from the embedding context.</doc>
      </member>
      <member name="popup_for"
              value="15"
              c:identifier="ATSPI_RELATION_POPUP_FOR"
              glib:nick="popup-for">
        <doc xml:space="preserve">Denotes that the object is a transient window or
frame associated with another onscreen object. Similar to @ATSPI_TOOLTIP_FOR,
but more general. Useful for windows which are technically toplevels
but which, for one or more reasons, do not explicitly cause their
associated window to lose 'window focus'. Creation of an @ATSPI_ROLE_WINDOW
object with the @ATSPI_RELATION_POPUP_FOR relation usually requires
some presentation action on the part
of assistive technology clients, even though the previous toplevel
@ATSPI_ROLE_FRAME object may still be the active window.</doc>
      </member>
      <member name="parent_window_of"
              value="16"
              c:identifier="ATSPI_RELATION_PARENT_WINDOW_OF"
              glib:nick="parent-window-of">
        <doc xml:space="preserve">This is the reciprocal relation to
@ATSPI_RELATION_POPUP_FOR.</doc>
      </member>
      <member name="description_for"
              value="17"
              c:identifier="ATSPI_RELATION_DESCRIPTION_FOR"
              glib:nick="description-for">
        <doc xml:space="preserve">Indicates that an object provides
descriptive information about another object; more verbose than
@ATSPI_RELATION_LABEL_FOR.</doc>
      </member>
      <member name="described_by"
              value="18"
              c:identifier="ATSPI_RELATION_DESCRIBED_BY"
              glib:nick="described-by">
        <doc xml:space="preserve">Indicates that another object provides
descriptive information about this object; more verbose than
@ATSPI_RELATION_LABELLED_BY.</doc>
      </member>
      <member name="last_defined"
              value="19"
              c:identifier="ATSPI_RELATION_LAST_DEFINED"
              glib:nick="last-defined">
        <doc xml:space="preserve">Do not use as a parameter value, used to
determine the size of the enumeration.</doc>
      </member>
    </enumeration>
    <enumeration name="Role"
                 glib:type-name="AtspiRole"
                 glib:get-type="atspi_role_get_type"
                 c:type="AtspiRole">
      <doc xml:space="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"
              glib:nick="invalid">
        <doc xml:space="preserve">A role indicating an error condition, such as
uninitialized Role data.</doc>
      </member>
      <member name="accelerator_label"
              value="1"
              c:identifier="ATSPI_ROLE_ACCELERATOR_LABEL"
              glib:nick="accelerator-label">
        <doc xml:space="preserve">Object is a label indicating the keyboard
accelerators for the parent.</doc>
      </member>
      <member name="alert"
              value="2"
              c:identifier="ATSPI_ROLE_ALERT"
              glib:nick="alert">
        <doc xml:space="preserve">Object is used to alert the user about something.</doc>
      </member>
      <member name="animation"
              value="3"
              c:identifier="ATSPI_ROLE_ANIMATION"
              glib:nick="animation">
        <doc xml:space="preserve">Object contains a dynamic or moving image of some
kind.</doc>
      </member>
      <member name="arrow"
              value="4"
              c:identifier="ATSPI_ROLE_ARROW"
              glib:nick="arrow">
        <doc xml:space="preserve">Object is a 2d directional indicator.</doc>
      </member>
      <member name="calendar"
              value="5"
              c:identifier="ATSPI_ROLE_CALENDAR"
              glib:nick="calendar">
        <doc xml:space="preserve">Object contains one or more dates, usually arranged
into a 2d list.</doc>
      </member>
      <member name="canvas"
              value="6"
              c:identifier="ATSPI_ROLE_CANVAS"
              glib:nick="canvas">
        <doc xml:space="preserve">Object that can be drawn into and is used to trap
events.</doc>
      </member>
      <member name="check_box"
              value="7"
              c:identifier="ATSPI_ROLE_CHECK_BOX"
              glib:nick="check-box">
        <doc xml:space="preserve">A choice that can be checked or unchecked and
provides a separate       indicator for the current state.</doc>
      </member>
      <member name="check_menu_item"
              value="8"
              c:identifier="ATSPI_ROLE_CHECK_MENU_ITEM"
              glib:nick="check-menu-item">
        <doc xml:space="preserve">A menu item that behaves like a check box. See
@ATSPI_ROLE_CHECK_BOX.</doc>
      </member>
      <member name="color_chooser"
              value="9"
              c:identifier="ATSPI_ROLE_COLOR_CHOOSER"
              glib:nick="color-chooser">
        <doc xml:space="preserve">A specialized dialog that lets the user choose a
color.</doc>
      </member>
      <member name="column_header"
              value="10"
              c:identifier="ATSPI_ROLE_COLUMN_HEADER"
              glib:nick="column-header">
        <doc xml:space="preserve">The header for a column of data.</doc>
      </member>
      <member name="combo_box"
              value="11"
              c:identifier="ATSPI_ROLE_COMBO_BOX"
              glib:nick="combo-box">
        <doc xml:space="preserve">A list of choices the user can select from.</doc>
      </member>
      <member name="date_editor"
              value="12"
              c:identifier="ATSPI_ROLE_DATE_EDITOR"
              glib:nick="date-editor">
        <doc xml:space="preserve">An object which allows entry of a date.</doc>
      </member>
      <member name="desktop_icon"
              value="13"
              c:identifier="ATSPI_ROLE_DESKTOP_ICON"
              glib:nick="desktop-icon">
        <doc xml:space="preserve">An inconifed internal frame within a DESKTOP_PANE.</doc>
      </member>
      <member name="desktop_frame"
              value="14"
              c:identifier="ATSPI_ROLE_DESKTOP_FRAME"
              glib:nick="desktop-frame">
        <doc xml:space="preserve">A pane that supports internal frames and
iconified versions of those internal frames.</doc>
      </member>
      <member name="dial"
              value="15"
              c:identifier="ATSPI_ROLE_DIAL"
              glib:nick="dial">
        <doc xml:space="preserve">An object that allows a value to be changed via rotating a
visual element, or which displays a value via such a rotating element.</doc>
      </member>
      <member name="dialog"
              value="16"
              c:identifier="ATSPI_ROLE_DIALOG"
              glib:nick="dialog">
        <doc xml:space="preserve">A top level window with title bar and a border.</doc>
      </member>
      <member name="directory_pane"
              value="17"
              c:identifier="ATSPI_ROLE_DIRECTORY_PANE"
              glib:nick="directory-pane">
        <doc xml:space="preserve">A pane that allows the user to navigate through
and select the contents of a directory.</doc>
      </member>
      <member name="drawing_area"
              value="18"
              c:identifier="ATSPI_ROLE_DRAWING_AREA"
              glib:nick="drawing-area">
        <doc xml:space="preserve">A specialized dialog that displays the files in
the directory and lets the user select a file, browse a different
directory, or specify a filename.</doc>
      </member>
      <member name="file_chooser"
              value="19"
              c:identifier="ATSPI_ROLE_FILE_CHOOSER"
              glib:nick="file-chooser">
        <doc xml:space="preserve">An object used for drawing custom user interface
elements.</doc>
      </member>
      <member name="filler"
              value="20"
              c:identifier="ATSPI_ROLE_FILLER"
              glib:nick="filler">
        <doc xml:space="preserve">A object that fills up space in a user interface.</doc>
      </member>
      <member name="focus_traversable"
              value="21"
              c:identifier="ATSPI_ROLE_FOCUS_TRAVERSABLE"
              glib:nick="focus-traversable">
        <doc xml:space="preserve">Don't use, reserved for future use.</doc>
      </member>
      <member name="font_chooser"
              value="22"
              c:identifier="ATSPI_ROLE_FONT_CHOOSER"
              glib:nick="font-chooser">
        <doc xml:space="preserve">Allows selection of a display font.</doc>
      </member>
      <member name="frame"
              value="23"
              c:identifier="ATSPI_ROLE_FRAME"
              glib:nick="frame">
        <doc xml:space="preserve">A top level window with a title bar, border, menubar,
etc.</doc>
      </member>
      <member name="glass_pane"
              value="24"
              c:identifier="ATSPI_ROLE_GLASS_PANE"
              glib:nick="glass-pane">
        <doc xml:space="preserve">A pane that is guaranteed to be painted on top of
all panes beneath it.</doc>
      </member>
      <member name="html_container"
              value="25"
              c:identifier="ATSPI_ROLE_HTML_CONTAINER"
              glib:nick="html-container">
        <doc xml:space="preserve">A document container for HTML, whose children
represent the document content.</doc>
      </member>
      <member name="icon"
              value="26"
              c:identifier="ATSPI_ROLE_ICON"
              glib:nick="icon">
        <doc xml:space="preserve">A small fixed size picture, typically used to decorate
components.</doc>
      </member>
      <member name="image"
              value="27"
              c:identifier="ATSPI_ROLE_IMAGE"
              glib:nick="image">
        <doc xml:space="preserve">An image, typically static.</doc>
      </member>
      <member name="internal_frame"
              value="28"
              c:identifier="ATSPI_ROLE_INTERNAL_FRAME"
              glib:nick="internal-frame">
        <doc xml:space="preserve">A frame-like object that is clipped by a desktop
pane.</doc>
      </member>
      <member name="label"
              value="29"
              c:identifier="ATSPI_ROLE_LABEL"
              glib:nick="label">
        <doc xml:space="preserve">An object used to present an icon or short string in an
interface.</doc>
      </member>
      <member name="layered_pane"
              value="30"
              c:identifier="ATSPI_ROLE_LAYERED_PANE"
              glib:nick="layered-pane">
        <doc xml:space="preserve">A specialized pane that allows its children to be
drawn in layers, providing a form of stacking order.</doc>
      </member>
      <member name="list"
              value="31"
              c:identifier="ATSPI_ROLE_LIST"
              glib:nick="list">
        <doc xml:space="preserve">An object that presents a list of objects to the user and
allows the user to select one or more of them.</doc>
      </member>
      <member name="list_item"
              value="32"
              c:identifier="ATSPI_ROLE_LIST_ITEM"
              glib:nick="list-item">
        <doc xml:space="preserve">An object that represents an element of a list.</doc>
      </member>
      <member name="menu"
              value="33"
              c:identifier="ATSPI_ROLE_MENU"
              glib:nick="menu">
        <doc xml:space="preserve">An object usually found inside a menu bar that contains a
list of actions the user can choose from.</doc>
      </member>
      <member name="menu_bar"
              value="34"
              c:identifier="ATSPI_ROLE_MENU_BAR"
              glib:nick="menu-bar">
        <doc xml:space="preserve">An object usually drawn at the top of the primary
dialog box of an application that contains a list of menus the user can
choose from.</doc>
      </member>
      <member name="menu_item"
              value="35"
              c:identifier="ATSPI_ROLE_MENU_ITEM"
              glib:nick="menu-item">
        <doc xml:space="preserve">An object usually contained in a menu that presents
an action the user can choose.</doc>
      </member>
      <member name="option_pane"
              value="36"
              c:identifier="ATSPI_ROLE_OPTION_PANE"
              glib:nick="option-pane">
        <doc xml:space="preserve">A specialized pane whose primary use is inside a
dialog.</doc>
      </member>
      <member name="page_tab"
              value="37"
              c:identifier="ATSPI_ROLE_PAGE_TAB"
              glib:nick="page-tab">
        <doc xml:space="preserve">An object that is a child of a page tab list.</doc>
      </member>
      <member name="page_tab_list"
              value="38"
              c:identifier="ATSPI_ROLE_PAGE_TAB_LIST"
              glib:nick="page-tab-list">
        <doc xml:space="preserve">An object that presents a series of panels (or
page tabs), one at a time,through some mechanism provided by the
object.</doc>
      </member>
      <member name="panel"
              value="39"
              c:identifier="ATSPI_ROLE_PANEL"
              glib:nick="panel">
        <doc xml:space="preserve">A generic container that is often used to group objects.</doc>
      </member>
      <member name="password_text"
              value="40"
              c:identifier="ATSPI_ROLE_PASSWORD_TEXT"
              glib:nick="password-text">
        <doc xml:space="preserve">A text object uses for passwords, or other places
where the text content is not shown visibly to the user.</doc>
      </member>
      <member name="popup_menu"
              value="41"
              c:identifier="ATSPI_ROLE_POPUP_MENU"
              glib:nick="popup-menu">
        <doc xml:space="preserve">A temporary window that is usually used to offer the
user a list of choices, and then hides when the user selects one of those
choices.</doc>
      </member>
      <member name="progress_bar"
              value="42"
              c:identifier="ATSPI_ROLE_PROGRESS_BAR"
              glib:nick="progress-bar">
        <doc xml:space="preserve">An object used to indicate how much of a task has
been completed.</doc>
      </member>
      <member name="push_button"
              value="43"
              c:identifier="ATSPI_ROLE_PUSH_BUTTON"
              glib:nick="push-button">
        <doc xml:space="preserve">An object the user can manipulate to tell the
application to do something.</doc>
      </member>
      <member name="radio_button"
              value="44"
              c:identifier="ATSPI_ROLE_RADIO_BUTTON"
              glib:nick="radio-button">
        <doc xml:space="preserve">A specialized check box that will cause other
radio buttons in the same group to become unchecked when this one is
checked.</doc>
      </member>
      <member name="radio_menu_item"
              value="45"
              c:identifier="ATSPI_ROLE_RADIO_MENU_ITEM"
              glib:nick="radio-menu-item">
        <doc xml:space="preserve">Object is both a menu item and a "radio button"
. See @ATSPI_ROLE_RADIO_BUTTON.</doc>
      </member>
      <member name="root_pane"
              value="46"
              c:identifier="ATSPI_ROLE_ROOT_PANE"
              glib:nick="root-pane">
        <doc xml:space="preserve">A specialized pane that has a glass pane and a
layered pane as its children.</doc>
      </member>
      <member name="row_header"
              value="47"
              c:identifier="ATSPI_ROLE_ROW_HEADER"
              glib:nick="row-header">
        <doc xml:space="preserve">The header for a row of data.</doc>
      </member>
      <member name="scroll_bar"
              value="48"
              c:identifier="ATSPI_ROLE_SCROLL_BAR"
              glib:nick="scroll-bar">
        <doc xml:space="preserve">An object usually used to allow a user to
incrementally view a large amount of data by moving the bounds of a
viewport along a one-dimensional axis.</doc>
      </member>
      <member name="scroll_pane"
              value="49"
              c:identifier="ATSPI_ROLE_SCROLL_PANE"
              glib:nick="scroll-pane">
        <doc xml:space="preserve">An object that allows a user to incrementally view
a large amount of information. @ATSPI_ROLE_SCROLL_PANE objects are usually
accompanied by @ATSPI_ROLE_SCROLL_BAR controllers, on which the
@ATSPI_RELATION_CONTROLLER_FOR and @ATSPI_RELATION_CONTROLLED_BY
reciprocal relations are set. See  #atspi_get_relation_set.</doc>
      </member>
      <member name="separator"
              value="50"
              c:identifier="ATSPI_ROLE_SEPARATOR"
              glib:nick="separator">
        <doc xml:space="preserve">An object usually contained in a menu to provide a
visible and logical separation of the contents in a menu.</doc>
      </member>
      <member name="slider"
              value="51"
              c:identifier="ATSPI_ROLE_SLIDER"
              glib:nick="slider">
        <doc xml:space="preserve">An object that allows the user to select from a bounded
range.</doc>
      </member>
      <member name="spin_button"
              value="52"
              c:identifier="ATSPI_ROLE_SPIN_BUTTON"
              glib:nick="spin-button">
        <doc xml:space="preserve">An object which allows one of a set of choices to
be selected, and which displays the current choice.  Unlike
@ATSPI_ROLE_SCROLL_BAR, @ATSPI_ROLE_SLIDER objects need not control
'viewport'-like objects.</doc>
      </member>
      <member name="split_pane"
              value="53"
              c:identifier="ATSPI_ROLE_SPLIT_PANE"
              glib:nick="split-pane">
        <doc xml:space="preserve">A specialized panel that presents two other panels
at the same time.</doc>
      </member>
      <member name="status_bar"
              value="54"
              c:identifier="ATSPI_ROLE_STATUS_BAR"
              glib:nick="status-bar">
        <doc xml:space="preserve">Object displays non-quantitative status information
(c.f. @ATSPI_ROLE_PROGRESS_BAR)</doc>
      </member>
      <member name="table"
              value="55"
              c:identifier="ATSPI_ROLE_TABLE"
              glib:nick="table">
        <doc xml:space="preserve">An object used to repesent information in terms of rows
and columns.</doc>
      </member>
      <member name="table_cell"
              value="56"
              c:identifier="ATSPI_ROLE_TABLE_CELL"
              glib:nick="table-cell">
        <doc xml:space="preserve">A 'cell' or discrete child within a Table. Note:
Table cells need not have @ATSPI_ROLE_TABLE_CELL, other
#AtspiRoleType values are valid as well.</doc>
      </member>
      <member name="table_column_header"
              value="57"
              c:identifier="ATSPI_ROLE_TABLE_COLUMN_HEADER"
              glib:nick="table-column-header">
        <doc xml:space="preserve">An object which labels a particular column
in an #AtspiTable.</doc>
      </member>
      <member name="table_row_header"
              value="58"
              c:identifier="ATSPI_ROLE_TABLE_ROW_HEADER"
              glib:nick="table-row-header">
        <doc xml:space="preserve">An object which labels a particular row in a
#AtspiTable. #AtspiTable rows and columns may also be labelled via the
@ATSPI_RELATION_LABEL_FOR/@ATSPI_RELATION_LABELLED_BY relationships.
See #atspi_get_relation_set.</doc>
      </member>
      <member name="tearoff_menu_item"
              value="59"
              c:identifier="ATSPI_ROLE_TEAROFF_MENU_ITEM"
              glib:nick="tearoff-menu-item">
        <doc xml:space="preserve">Object allows menu to be removed from menubar
and shown in its own window.</doc>
      </member>
      <member name="terminal"
              value="60"
              c:identifier="ATSPI_ROLE_TERMINAL"
              glib:nick="terminal">
        <doc xml:space="preserve">An object that emulates a terminal.</doc>
      </member>
      <member name="text"
              value="61"
              c:identifier="ATSPI_ROLE_TEXT"
              glib:nick="text">
        <doc xml:space="preserve">An interactive widget that supports multiple lines of text
and optionally accepts user input, but whose purpose is not to solicit user
input. Thus @ATSPI_ROLE_TEXT is appropriate for the text view in a plain text
editor but inappropriate for an input field in a dialog box or web form. For
widgets whose purpose is to solicit input from the user, see @ATSPI_ROLE_ENTRY
and @ATSPI_ROLE_PASSWORD_TEXT. For generic objects which display a brief amount
of textual information, see @ATSPI_ROLE_STATIC.</doc>
      </member>
      <member name="toggle_button"
              value="62"
              c:identifier="ATSPI_ROLE_TOGGLE_BUTTON"
              glib:nick="toggle-button">
        <doc xml:space="preserve">A specialized push button that can be checked or
unchecked, but does not procide a separate indicator for the current
state.</doc>
      </member>
      <member name="tool_bar"
              value="63"
              c:identifier="ATSPI_ROLE_TOOL_BAR"
              glib:nick="tool-bar">
        <doc xml:space="preserve">A bar or palette usually composed of push buttons or
toggle buttons.</doc>
      </member>
      <member name="tool_tip"
              value="64"
              c:identifier="ATSPI_ROLE_TOOL_TIP"
              glib:nick="tool-tip">
        <doc xml:space="preserve">An object that provides information about another
object.</doc>
      </member>
      <member name="tree"
              value="65"
              c:identifier="ATSPI_ROLE_TREE"
              glib:nick="tree">
        <doc xml:space="preserve">An object used to repsent hierarchical information to the
user.</doc>
      </member>
      <member name="tree_table"
              value="66"
              c:identifier="ATSPI_ROLE_TREE_TABLE"
              glib:nick="tree-table">
        <doc xml:space="preserve">An object that presents both tabular and
hierarchical info to the user.</doc>
      </member>
      <member name="unknown"
              value="67"
              c:identifier="ATSPI_ROLE_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">The object contains some #AtspiAccessible information,
but its role is not known.</doc>
      </member>
      <member name="viewport"
              value="68"
              c:identifier="ATSPI_ROLE_VIEWPORT"
              glib:nick="viewport">
        <doc xml:space="preserve">An object usually used in a scroll pane, or to
otherwise clip a larger object or content renderer to a specific
onscreen viewport.</doc>
      </member>
      <member name="window"
              value="69"
              c:identifier="ATSPI_ROLE_WINDOW"
              glib:nick="window">
        <doc xml:space="preserve">A top level window with no title or border.</doc>
      </member>
      <member name="extended"
              value="70"
              c:identifier="ATSPI_ROLE_EXTENDED"
              glib:nick="extended">
        <doc xml:space="preserve">means that the role for this item is known, but not
included in the core enumeration.</doc>
      </member>
      <member name="header"
              value="71"
              c:identifier="ATSPI_ROLE_HEADER"
              glib:nick="header">
        <doc xml:space="preserve">An object that serves as a document header.</doc>
      </member>
      <member name="footer"
              value="72"
              c:identifier="ATSPI_ROLE_FOOTER"
              glib:nick="footer">
        <doc xml:space="preserve">An object that serves as a document footer.</doc>
      </member>
      <member name="paragraph"
              value="73"
              c:identifier="ATSPI_ROLE_PARAGRAPH"
              glib:nick="paragraph">
        <doc xml:space="preserve">An object which is contains a single paragraph of
text content. See also @ATSPI_ROLE_TEXT.</doc>
      </member>
      <member name="ruler"
              value="74"
              c:identifier="ATSPI_ROLE_RULER"
              glib:nick="ruler">
        <doc xml:space="preserve">An object which describes margins and tab stops, etc.
   for text objects which it controls (should have
@ATSPI_RELATION_CONTROLLER_FOR relation to such).</doc>
      </member>
      <member name="application"
              value="75"
              c:identifier="ATSPI_ROLE_APPLICATION"
              glib:nick="application">
        <doc xml:space="preserve">An object corresponding to the toplevel accessible
of an application, which may contain @ATSPI_ROLE_FRAME objects or other
accessible objects. Children of #AccessibleDesktop objects  are generally
@ATSPI_ROLE_APPLICATION objects.</doc>
      </member>
      <member name="autocomplete"
              value="76"
              c:identifier="ATSPI_ROLE_AUTOCOMPLETE"
              glib:nick="autocomplete">
        <doc xml:space="preserve">The object is a dialog or list containing items
for insertion into an entry widget, for instance a list of words for
completion of a text entry.</doc>
      </member>
      <member name="editbar"
              value="77"
              c:identifier="ATSPI_ROLE_EDITBAR"
              glib:nick="editbar">
        <doc xml:space="preserve">The object is an editable text object in a toolbar.</doc>
      </member>
      <member name="embedded"
              value="78"
              c:identifier="ATSPI_ROLE_EMBEDDED"
              glib:nick="embedded">
        <doc xml:space="preserve">The object is an embedded component container.  This
role is a "grouping" hint that the contained objects share a context
which is different from the container in which this accessible is
embedded. In particular, it is used for some kinds of document embedding,
and for embedding of out-of-process component, "panel applets", etc.</doc>
      </member>
      <member name="entry"
              value="79"
              c:identifier="ATSPI_ROLE_ENTRY"
              glib:nick="entry">
        <doc xml:space="preserve">The object is a component whose textual content may be
entered or modified by the user, provided @ATSPI_STATE_EDITABLE is present.
A readonly @ATSPI_ROLE_ENTRY object (i.e. where @ATSPI_STATE_EDITABLE is
not present) implies a read-only 'text field' in a form, as opposed to a
title, label, or caption.</doc>
      </member>
      <member name="chart"
              value="80"
              c:identifier="ATSPI_ROLE_CHART"
              glib:nick="chart">
        <doc xml:space="preserve">The object is a graphical depiction of quantitative data.
It may contain multiple subelements whose attributes and/or description
may be queried to obtain both the  quantitative data and information about
how the data is being presented. The @ATSPI_LABELLED_BY relation is
particularly important in interpreting objects of this type, as is the
accessible description property. See @ATSPI_ROLE_CAPTION.</doc>
      </member>
      <member name="caption"
              value="81"
              c:identifier="ATSPI_ROLE_CAPTION"
              glib:nick="caption">
        <doc xml:space="preserve">The object contains descriptive information, usually
textual, about another user interface element such as a table, chart, or
image.</doc>
      </member>
      <member name="document_frame"
              value="82"
              c:identifier="ATSPI_ROLE_DOCUMENT_FRAME"
              glib:nick="document-frame">
        <doc xml:space="preserve">The object is a visual frame or container which
contains a view of document content. #AtspiDocument frames may occur within
another #AtspiDocument instance, in which case the second  document may be
said to be embedded in the containing instance.  HTML frames are often
ATSPI_ROLE_DOCUMENT_FRAME:  Either this object, or a singleton descendant,
should implement the #AtspiDocument interface.</doc>
      </member>
      <member name="heading"
              value="83"
              c:identifier="ATSPI_ROLE_HEADING"
              glib:nick="heading">
        <doc xml:space="preserve">The object serves as a heading for content which
follows it in a document. The 'heading level' of the heading, if
availabe,  may be obtained by       querying the object's attributes.</doc>
      </member>
      <member name="page"
              value="84"
              c:identifier="ATSPI_ROLE_PAGE"
              glib:nick="page">
        <doc xml:space="preserve">The object is a containing instance which encapsulates a
page of information. @ATSPI_ROLE_PAGE is used in documents and content which
support a paginated navigation model.</doc>
      </member>
      <member name="section"
              value="85"
              c:identifier="ATSPI_ROLE_SECTION"
              glib:nick="section">
        <doc xml:space="preserve">The object is a containing instance of document content
which constitutes a particular 'logical' section of the document.  The
type of content within a section, and the nature of the section division
itself, may be obtained by querying the object's attributes.  Sections
may be nested.</doc>
      </member>
      <member name="redundant_object"
              value="86"
              c:identifier="ATSPI_ROLE_REDUNDANT_OBJECT"
              glib:nick="redundant-object">
        <doc xml:space="preserve">The object is redundant with another object in
the hierarchy, and is exposed for purely technical reasons.  Objects of
this role should be ignored by clients, if they are encountered at all.</doc>
      </member>
      <member name="form"
              value="87"
              c:identifier="ATSPI_ROLE_FORM"
              glib:nick="form">
        <doc xml:space="preserve">The object is a containing instance of document content
which has within it components with which the user can interact in order
to input information; i.e. the object is a container for pushbuttons,
comboboxes, text input fields, and other 'GUI' components. @ATSPI_ROLE_FORM
should not, in general, be used for toplevel GUI containers or dialogs,
but should be reserved for 'GUI' containers which occur within document
content, for instance within Web documents, presentations, or text
documents.  Unlike other GUI containers and dialogs which occur inside
application instances, @ATSPI_ROLE_FORM containers' components are
associated with the current document, rather than the current foreground
application or viewer instance.</doc>
      </member>
      <member name="link"
              value="88"
              c:identifier="ATSPI_ROLE_LINK"
              glib:nick="link">
        <doc xml:space="preserve">The object is a hypertext anchor, i.e. a "link" in a
hypertext document.  Such objects are distinct from 'inline'       content
which may also use the #AtspiHypertext/#AtspiHyperlink interfacesto indicate
the range/location within a text object where an inline or embedded object
lies.</doc>
      </member>
      <member name="input_method_window"
              value="89"
              c:identifier="ATSPI_ROLE_INPUT_METHOD_WINDOW"
              glib:nick="input-method-window">
        <doc xml:space="preserve">The object is a window or similar viewport
which is used to allow composition or input of a 'complex character',
in other words it is an "input method window".</doc>
      </member>
      <member name="table_row"
              value="90"
              c:identifier="ATSPI_ROLE_TABLE_ROW"
              glib:nick="table-row">
        <doc xml:space="preserve">A row in a table.</doc>
      </member>
      <member name="tree_item"
              value="91"
              c:identifier="ATSPI_ROLE_TREE_ITEM"
              glib:nick="tree-item">
        <doc xml:space="preserve">An object that represents an element of a tree.</doc>
      </member>
      <member name="document_spreadsheet"
              value="92"
              c:identifier="ATSPI_ROLE_DOCUMENT_SPREADSHEET"
              glib:nick="document-spreadsheet">
        <doc xml:space="preserve">A document frame which contains a
spreadsheet.</doc>
      </member>
      <member name="document_presentation"
              value="93"
              c:identifier="ATSPI_ROLE_DOCUMENT_PRESENTATION"
              glib:nick="document-presentation">
        <doc xml:space="preserve">A document frame which contains a
presentation or slide content.</doc>
      </member>
      <member name="document_text"
              value="94"
              c:identifier="ATSPI_ROLE_DOCUMENT_TEXT"
              glib:nick="document-text">
        <doc xml:space="preserve">A document frame which contains textual content,
such as found in a word processing
application.</doc>
      </member>
      <member name="document_web"
              value="95"
              c:identifier="ATSPI_ROLE_DOCUMENT_WEB"
              glib:nick="document-web">
        <doc xml:space="preserve">A document frame which contains HTML or other
markup suitable for display in a web browser.</doc>
      </member>
      <member name="document_email"
              value="96"
              c:identifier="ATSPI_ROLE_DOCUMENT_EMAIL"
              glib:nick="document-email">
        <doc xml:space="preserve">A document frame which contains email content
to be displayed or composed either in plain text or
HTML.</doc>
      </member>
      <member name="comment"
              value="97"
              c:identifier="ATSPI_ROLE_COMMENT"
              glib:nick="comment">
        <doc xml:space="preserve">An object found within a document and designed to
present a comment, note, or other annotation. In some cases, this object
might not be visible until activated.</doc>
      </member>
      <member name="list_box"
              value="98"
              c:identifier="ATSPI_ROLE_LIST_BOX"
              glib:nick="list-box">
        <doc xml:space="preserve">A non-collapsible list of choices the user can
select from.</doc>
      </member>
      <member name="grouping"
              value="99"
              c:identifier="ATSPI_ROLE_GROUPING"
              glib:nick="grouping">
        <doc xml:space="preserve">A group of related widgets. This group typically has
a label.</doc>
      </member>
      <member name="image_map"
              value="100"
              c:identifier="ATSPI_ROLE_IMAGE_MAP"
              glib:nick="image-map">
        <doc xml:space="preserve">An image map object. Usually a graphic with multiple
hotspots, where each hotspot can be activated resulting in the loading of
another document or section of a document.</doc>
      </member>
      <member name="notification"
              value="101"
              c:identifier="ATSPI_ROLE_NOTIFICATION"
              glib:nick="notification">
        <doc xml:space="preserve">A transitory object designed to present a
message to the user, typically at the desktop level rather than inside a
particular application.</doc>
      </member>
      <member name="info_bar"
              value="102"
              c:identifier="ATSPI_ROLE_INFO_BAR"
              glib:nick="info-bar">
        <doc xml:space="preserve">An object designed to present a message to the user
within an existing window.</doc>
      </member>
      <member name="level_bar"
              value="103"
              c:identifier="ATSPI_ROLE_LEVEL_BAR"
              glib:nick="level-bar">
        <doc xml:space="preserve">A bar that serves as a level indicator to, for
instance, show the strength of a password or the state of a battery.
  Since: 2.8</doc>
      </member>
      <member name="title_bar"
              value="104"
              c:identifier="ATSPI_ROLE_TITLE_BAR"
              glib:nick="title-bar">
        <doc xml:space="preserve">A bar that serves as the title of a window or a
dialog. @Since: 2.12</doc>
      </member>
      <member name="block_quote"
              value="105"
              c:identifier="ATSPI_ROLE_BLOCK_QUOTE"
              glib:nick="block-quote">
        <doc xml:space="preserve">An object which contains a text section
that is quoted from another source.  @Since: 2.12</doc>
      </member>
      <member name="audio"
              value="106"
              c:identifier="ATSPI_ROLE_AUDIO"
              glib:nick="audio">
        <doc xml:space="preserve">An object which represents an audio
element. @Since: 2.12</doc>
      </member>
      <member name="video"
              value="107"
              c:identifier="ATSPI_ROLE_VIDEO"
              glib:nick="video">
        <doc xml:space="preserve">An object which represents a video
element. @Since: 2.12</doc>
      </member>
      <member name="definition"
              value="108"
              c:identifier="ATSPI_ROLE_DEFINITION"
              glib:nick="definition">
        <doc xml:space="preserve">A definition of a term or concept. @Since: 2.12</doc>
      </member>
      <member name="article"
              value="109"
              c:identifier="ATSPI_ROLE_ARTICLE"
              glib:nick="article">
        <doc xml:space="preserve">A section of a page that consists of a
composition that forms an independent part of a document, page, or
site. Examples: A blog entry, a news story, a forum post. @Since:
2.12</doc>
      </member>
      <member name="landmark"
              value="110"
              c:identifier="ATSPI_ROLE_LANDMARK"
              glib:nick="landmark">
        <doc xml:space="preserve">A region of a web page intended as a
navigational landmark. This is designed to allow Assistive
Technologies to provide quick navigation among key regions within a
document. @Since: 2.12</doc>
      </member>
      <member name="log"
              value="111"
              c:identifier="ATSPI_ROLE_LOG"
              glib:nick="log">
        <doc xml:space="preserve">A text widget or container holding log content, such
as chat history and error logs. In this role there is a
relationship between the arrival of new items in the log and the
reading order. The log contains a meaningful sequence and new
information is added only to the end of the log, not at arbitrary
points. @Since: 2.12</doc>
      </member>
      <member name="marquee"
              value="112"
              c:identifier="ATSPI_ROLE_MARQUEE"
              glib:nick="marquee">
        <doc xml:space="preserve">A container where non-essential information
changes frequently. Common usages of marquee include stock tickers
and ad banners. The primary difference between a marquee and a log
is that logs usually have a meaningful order or sequence of
important content changes. @Since: 2.12</doc>
      </member>
      <member name="math"
              value="113"
              c:identifier="ATSPI_ROLE_MATH"
              glib:nick="math">
        <doc xml:space="preserve">A text widget or container that holds a mathematical
expression. @Since: 2.12</doc>
      </member>
      <member name="rating"
              value="114"
              c:identifier="ATSPI_ROLE_RATING"
              glib:nick="rating">
        <doc xml:space="preserve">A widget whose purpose is to display a rating,
such as the number of stars associated with a song in a media
player. Objects of this role should also implement
AtspiValue. @Since: 2.12</doc>
      </member>
      <member name="timer"
              value="115"
              c:identifier="ATSPI_ROLE_TIMER"
              glib:nick="timer">
        <doc xml:space="preserve">An object containing a numerical counter which
indicates an amount of elapsed time from a start point, or the time
remaining until an end point. @Since: 2.12</doc>
      </member>
      <member name="static"
              value="116"
              c:identifier="ATSPI_ROLE_STATIC"
              glib:nick="static">
        <doc xml:space="preserve">A generic non-container object whose purpose is to display
a brief amount of information to the user and whose role is known by the
implementor but lacks semantic value for the user. Examples in which
@ATSPI_ROLE_STATIC is appropriate include the message displayed in a message
box and an image used as an alternative means to display text.
@ATSPI_ROLE_STATIC should not be applied to widgets which are traditionally
interactive, objects which display a significant amount of content, or any
object which has an accessible relation pointing to another object. The
displayed information, as a general rule, should be exposed through the
accessible name of the object. For labels which describe another widget, see
@ATSPI_ROLE_LABEL. For text views, see @ATSPI_ROLE_TEXT. For generic
containers, see @ATSPI_ROLE_PANEL. For objects whose role is not known by the
implementor, see @ATSPI_ROLE_UNKNOWN. @Since: 2.16.</doc>
      </member>
      <member name="math_fraction"
              value="117"
              c:identifier="ATSPI_ROLE_MATH_FRACTION"
              glib:nick="math-fraction">
        <doc xml:space="preserve">An object that represents a mathematical fraction.</doc>
      </member>
      <member name="math_root"
              value="118"
              c:identifier="ATSPI_ROLE_MATH_ROOT"
              glib:nick="math-root">
        <doc xml:space="preserve">An object that represents a mathematical expression
displayed with a radical. @Since: 2.16.</doc>
      </member>
      <member name="subscript"
              value="119"
              c:identifier="ATSPI_ROLE_SUBSCRIPT"
              glib:nick="subscript">
        <doc xml:space="preserve">An object that contains text that is displayed as a
subscript. @Since: 2.16.</doc>
      </member>
      <member name="superscript"
              value="120"
              c:identifier="ATSPI_ROLE_SUPERSCRIPT"
              glib:nick="superscript">
        <doc xml:space="preserve">An object that contains text that is displayed as a
superscript. @Since: 2.16.</doc>
      </member>
      <member name="last_defined"
              value="121"
              c:identifier="ATSPI_ROLE_LAST_DEFINED"
              glib:nick="last-defined">
        <doc xml:space="preserve">Not a valid role, used for finding end of
enumeration.</doc>
      </member>
      <function name="get_name" c:identifier="atspi_role_get_name">
        <doc xml:space="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:space="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:space="preserve">an #AtspiRole object to query.</doc>
            <type name="Role" c:type="AtspiRole"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <constant name="SORTORDER_COUNT" value="8" c:type="ATSPI_SORTORDER_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiCollectionSortOrder.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="STATETYPE_COUNT" value="42" c:type="ATSPI_STATETYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiStateType.</doc>
      <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:space="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:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection implementor on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="deselect_child"
              c:identifier="atspi_selection_deselect_child"
              throws="1">
        <doc xml:space="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:space="preserve">#TRUE if the child was successfully deselected, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if the child was successfully deselected, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
          <parameter name="selected_child_index" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the number of children of an #AtspiSelection implementor which are
       currently selected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection implementor on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selected_child"
              c:identifier="atspi_selection_get_selected_child"
              throws="1">
        <doc xml:space="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:space="preserve">a pointer to a selected #AtspiAccessible child
         object, specified by @selected_child_index.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
          <parameter name="selected_child_index" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if the specified child is currently selected,
         #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection implementor on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection implementor on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="select_child"
              c:identifier="atspi_selection_select_child"
              throws="1">
        <doc xml:space="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:space="preserve">#TRUE if the child was successfully selected, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiSelection on which to operate.</doc>
            <type name="Selection" c:type="AtspiSelection*"/>
          </instance-parameter>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Generates an #AtspiStateSet with the given @states.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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:space="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:space="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>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Determines the differences between two instances of #AtspiStateSet.

@see #atspi_state_set_equals.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the first #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
          <parameter name="set2" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if @state is true/included in the given #AtspiStateSet,
         otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if the two #AtspiStateSets are equivalent,
otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the first #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
          <parameter name="set2" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Returns the states in an #AtspiStateSet as an array.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #GArray of state
         types representing the current state.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="StateType"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiStateSet to be queried.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_empty" c:identifier="atspi_state_set_is_empty">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the state set contains no states; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">The #AtspiStateSet to query.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="atspi_state_set_remove">
        <doc xml:space="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>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="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:space="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>
          <instance-parameter name="set" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="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:space="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"
                 glib:type-name="AtspiStateType"
                 glib:get-type="atspi_state_type_get_type"
                 c:type="AtspiStateType">
      <doc xml:space="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"
              glib:nick="invalid">
        <doc xml:space="preserve">Indicates an invalid state - probably an error
condition.</doc>
      </member>
      <member name="active"
              value="1"
              c:identifier="ATSPI_STATE_ACTIVE"
              glib:nick="active">
        <doc xml:space="preserve">Indicates a window is currently the active window, or
an object is the active subelement within a container or table.
@ATSPI_STATE_ACTIVE should not be used for objects which have
@ATSPI_STATE_FOCUSABLE or @ATSPI_STATE_SELECTABLE: Those objects should use
@ATSPI_STATE_FOCUSED and @ATSPI_STATE_SELECTED respectively.
@ATSPI_STATE_ACTIVE is a means to indicate that an object which is not
focusable and not selectable is the currently-active item within its
parent container.</doc>
      </member>
      <member name="armed"
              value="2"
              c:identifier="ATSPI_STATE_ARMED"
              glib:nick="armed">
        <doc xml:space="preserve">Indicates that the object is armed.</doc>
      </member>
      <member name="busy"
              value="3"
              c:identifier="ATSPI_STATE_BUSY"
              glib:nick="busy">
        <doc xml:space="preserve">Indicates the current object is busy, i.e. onscreen
representation is in the process of changing, or       the object is
temporarily unavailable for interaction due to activity already in progress.</doc>
      </member>
      <member name="checked"
              value="4"
              c:identifier="ATSPI_STATE_CHECKED"
              glib:nick="checked">
        <doc xml:space="preserve">Indicates this object is currently checked.</doc>
      </member>
      <member name="collapsed"
              value="5"
              c:identifier="ATSPI_STATE_COLLAPSED"
              glib:nick="collapsed">
        <doc xml:space="preserve">Indicates this object is collapsed.</doc>
      </member>
      <member name="defunct"
              value="6"
              c:identifier="ATSPI_STATE_DEFUNCT"
              glib:nick="defunct">
        <doc xml:space="preserve">Indicates that this object no longer has a valid
backing widget        (for instance, if its peer object has been destroyed).</doc>
      </member>
      <member name="editable"
              value="7"
              c:identifier="ATSPI_STATE_EDITABLE"
              glib:nick="editable">
        <doc xml:space="preserve">Indicates the user can change the contents of this
object.</doc>
      </member>
      <member name="enabled"
              value="8"
              c:identifier="ATSPI_STATE_ENABLED"
              glib:nick="enabled">
        <doc xml:space="preserve">Indicates that this object is enabled, i.e. that it
currently reflects some application state. Objects that are "greyed out"
may lack this state, and may lack the @ATSPI_STATE_SENSITIVE if direct
user interaction cannot cause them to acquire @ATSPI_STATE_ENABLED.
See @ATSPI_STATE_SENSITIVE.</doc>
      </member>
      <member name="expandable"
              value="9"
              c:identifier="ATSPI_STATE_EXPANDABLE"
              glib:nick="expandable">
        <doc xml:space="preserve">Indicates this object allows progressive
disclosure of its children.</doc>
      </member>
      <member name="expanded"
              value="10"
              c:identifier="ATSPI_STATE_EXPANDED"
              glib:nick="expanded">
        <doc xml:space="preserve">Indicates this object is expanded.</doc>
      </member>
      <member name="focusable"
              value="11"
              c:identifier="ATSPI_STATE_FOCUSABLE"
              glib:nick="focusable">
        <doc xml:space="preserve">Indicates this object can accept keyboard focus,
which means all       events resulting from typing on the keyboard will
normally be passed       to it when it has focus.</doc>
      </member>
      <member name="focused"
              value="12"
              c:identifier="ATSPI_STATE_FOCUSED"
              glib:nick="focused">
        <doc xml:space="preserve">Indicates this object currently has the keyboard
focus.</doc>
      </member>
      <member name="has_tooltip"
              value="13"
              c:identifier="ATSPI_STATE_HAS_TOOLTIP"
              glib:nick="has-tooltip">
        <doc xml:space="preserve">Indicates that the object has an associated
tooltip.</doc>
      </member>
      <member name="horizontal"
              value="14"
              c:identifier="ATSPI_STATE_HORIZONTAL"
              glib:nick="horizontal">
        <doc xml:space="preserve">Indicates the orientation of this object is
horizontal.</doc>
      </member>
      <member name="iconified"
              value="15"
              c:identifier="ATSPI_STATE_ICONIFIED"
              glib:nick="iconified">
        <doc xml:space="preserve">Indicates this object is minimized and is
represented only by an icon.</doc>
      </member>
      <member name="modal"
              value="16"
              c:identifier="ATSPI_STATE_MODAL"
              glib:nick="modal">
        <doc xml:space="preserve">Indicates something must be done with this object
before the user can interact with an object in a different window.</doc>
      </member>
      <member name="multi_line"
              value="17"
              c:identifier="ATSPI_STATE_MULTI_LINE"
              glib:nick="multi-line">
        <doc xml:space="preserve">Indicates this (text) object can contain multiple
lines of text.</doc>
      </member>
      <member name="multiselectable"
              value="18"
              c:identifier="ATSPI_STATE_MULTISELECTABLE"
              glib:nick="multiselectable">
        <doc xml:space="preserve">Indicates this object allows more than one of
its children to be selected at the same time, or in the case of text
objects, that the object supports non-contiguous text selections.</doc>
      </member>
      <member name="opaque"
              value="19"
              c:identifier="ATSPI_STATE_OPAQUE"
              glib:nick="opaque">
        <doc xml:space="preserve">Indicates this object paints every pixel within its
rectangular region. It also indicates an alpha value of unity, if it
supports alpha blending.</doc>
      </member>
      <member name="pressed"
              value="20"
              c:identifier="ATSPI_STATE_PRESSED"
              glib:nick="pressed">
        <doc xml:space="preserve">Indicates this object is currently pressed.</doc>
      </member>
      <member name="resizable"
              value="21"
              c:identifier="ATSPI_STATE_RESIZABLE"
              glib:nick="resizable">
        <doc xml:space="preserve">Indicates the size of this object's size is not
fixed.</doc>
      </member>
      <member name="selectable"
              value="22"
              c:identifier="ATSPI_STATE_SELECTABLE"
              glib:nick="selectable">
        <doc xml:space="preserve">Indicates this object is the child of an object
that allows its children to be selected and that this child is one of
those children       that can be selected.</doc>
      </member>
      <member name="selected"
              value="23"
              c:identifier="ATSPI_STATE_SELECTED"
              glib:nick="selected">
        <doc xml:space="preserve">Indicates this object is the child of an object that
allows its children to be selected and that this child is one of those
children that has been selected.</doc>
      </member>
      <member name="sensitive"
              value="24"
              c:identifier="ATSPI_STATE_SENSITIVE"
              glib:nick="sensitive">
        <doc xml:space="preserve">Indicates this object is sensitive, e.g. to user
interaction. @ATSPI_STATE_SENSITIVE usually accompanies.
@ATSPI_STATE_ENABLED for user-actionable controls, but may be found in the
absence of @ATSPI_STATE_ENABLED if the current visible state of the control
is "disconnected" from the application state.  In such cases, direct user
interaction can often result in the object gaining @ATSPI_STATE_SENSITIVE,
for instance if a user makes an explicit selection using an object whose
current state is ambiguous or undefined. See @ATSPI_STATE_ENABLED,
@ATSPI_STATE_INDETERMINATE.</doc>
      </member>
      <member name="showing"
              value="25"
              c:identifier="ATSPI_STATE_SHOWING"
              glib:nick="showing">
        <doc xml:space="preserve">Indicates this object, the object's parent, the
object's parent's parent, and so on, are all 'shown' to the end-user,
i.e. subject to "exposure" if blocking or obscuring objects do not
interpose between this object and the top of the window stack.</doc>
      </member>
      <member name="single_line"
              value="26"
              c:identifier="ATSPI_STATE_SINGLE_LINE"
              glib:nick="single-line">
        <doc xml:space="preserve">Indicates this (text) object can contain only a
single line of text.</doc>
      </member>
      <member name="stale"
              value="27"
              c:identifier="ATSPI_STATE_STALE"
              glib:nick="stale">
        <doc xml:space="preserve">Indicates that the information returned for this object
may no longer be synchronized with the application state.  This can occur
if the object has @ATSPI_STATE_TRANSIENT, and can also occur towards the
end of the object peer's lifecycle.</doc>
      </member>
      <member name="transient"
              value="28"
              c:identifier="ATSPI_STATE_TRANSIENT"
              glib:nick="transient">
        <doc xml:space="preserve">Indicates this object is transient.</doc>
      </member>
      <member name="vertical"
              value="29"
              c:identifier="ATSPI_STATE_VERTICAL"
              glib:nick="vertical">
        <doc xml:space="preserve">Indicates the orientation of this object is vertical;
for example this state may appear on such objects as scrollbars, text
objects (with vertical text flow), separators, etc.</doc>
      </member>
      <member name="visible"
              value="30"
              c:identifier="ATSPI_STATE_VISIBLE"
              glib:nick="visible">
        <doc xml:space="preserve">Indicates this object is visible, e.g. has been
explicitly marked for exposure to the user. @ATSPI_STATE_VISIBLE is no
guarantee that the object is actually unobscured on the screen, only that
it is 'potentially' visible, barring obstruction, being scrolled or clipped
out of the field of view, or having an ancestor container that has not yet
made visible. A widget is potentially onscreen if it has both
@ATSPI_STATE_VISIBLE and @ATSPI_STATE_SHOWING. The absence of
@ATSPI_STATE_VISIBLE and @ATSPI_STATE_SHOWING is
semantically equivalent to saying that an object is 'hidden'.</doc>
      </member>
      <member name="manages_descendants"
              value="31"
              c:identifier="ATSPI_STATE_MANAGES_DESCENDANTS"
              glib:nick="manages-descendants">
        <doc xml:space="preserve">Indicates that "active-descendant-changed"
event is sent when children become 'active' (i.e. are selected or
navigated to onscreen).  Used to prevent need to enumerate all children
in very large containers, like tables. The presence of
@ATSPI_STATE_MANAGES_DESCENDANTS is an indication to the client that the
children should not, and need not, be enumerated by the client.
Objects implementing this state are expected to provide relevant state
notifications to listening clients, for instance notifications of
visibility changes and activation of their contained child objects, without
the client having previously requested references to those children.</doc>
      </member>
      <member name="indeterminate"
              value="32"
              c:identifier="ATSPI_STATE_INDETERMINATE"
              glib:nick="indeterminate">
        <doc xml:space="preserve">Indicates that a check box or other boolean
indicator is in a state other than checked or not checked.  This
usually means that the boolean value reflected or controlled by the
object does not apply consistently to the entire current context.
For example, a checkbox for the "Bold" attribute of text may have
@ATSPI_STATE_INDETERMINATE if the currently selected text contains a mixture
of weight attributes. In many cases interacting with a
@ATSPI_STATE_INDETERMINATE object will cause the context's corresponding
boolean attribute to be homogenized, whereupon the object will lose
@ATSPI_STATE_INDETERMINATE and a corresponding state-changed event will be
fired.</doc>
      </member>
      <member name="required"
              value="33"
              c:identifier="ATSPI_STATE_REQUIRED"
              glib:nick="required">
        <doc xml:space="preserve">Indicates that user interaction with this object is
'required' from the user, for instance before completing the
processing of a form.</doc>
      </member>
      <member name="truncated"
              value="34"
              c:identifier="ATSPI_STATE_TRUNCATED"
              glib:nick="truncated">
        <doc xml:space="preserve">Indicates that an object's onscreen content
is truncated, e.g. a text value in a spreadsheet cell.</doc>
      </member>
      <member name="animated"
              value="35"
              c:identifier="ATSPI_STATE_ANIMATED"
              glib:nick="animated">
        <doc xml:space="preserve">Indicates this object's visual representation is
dynamic, not static. This state may be applied to an object during an
animated 'effect' and be removed from the object once its visual
representation becomes static. Some applications, notably content viewers,
may not be able to detect all kinds of animated content.  Therefore the
absence of this state should not be taken as
definitive evidence that the object's visual representation is
static; this state is advisory.</doc>
      </member>
      <member name="invalid_entry"
              value="36"
              c:identifier="ATSPI_STATE_INVALID_ENTRY"
              glib:nick="invalid-entry">
        <doc xml:space="preserve">This object has indicated an error condition
due to failure of input validation.  For instance, a form control may
acquire this state in response to invalid or malformed user input.</doc>
      </member>
      <member name="supports_autocompletion"
              value="37"
              c:identifier="ATSPI_STATE_SUPPORTS_AUTOCOMPLETION"
              glib:nick="supports-autocompletion">
        <doc xml:space="preserve">This state indicates that the object
in question implements some form of typeahead or
pre-selection behavior whereby entering the first character of one or more
sub-elements causes those elements to scroll into view or become
selected. Subsequent character input may narrow the selection further as
long as one or more sub-elements match the string. This state is normally
only useful and encountered on objects that implement #AtspiSelection.
In some cases the typeahead behavior may result in full or partial
completion of the data in the input field, in which case
these input events may trigger text-changed events from the source.</doc>
      </member>
      <member name="selectable_text"
              value="38"
              c:identifier="ATSPI_STATE_SELECTABLE_TEXT"
              glib:nick="selectable-text">
        <doc xml:space="preserve">This state indicates that the object in
question supports text selection. It should only be exposed on objects
which implement the #AtspiText interface, in order to distinguish this state
from @ATSPI_STATE_SELECTABLE, which infers that the object in question is a
selectable child of an object which implements #AtspiSelection. While
similar, text selection and subelement selection are distinct operations.</doc>
      </member>
      <member name="is_default"
              value="39"
              c:identifier="ATSPI_STATE_IS_DEFAULT"
              glib:nick="is-default">
        <doc xml:space="preserve">This state indicates that the object in question is
the 'default' interaction object in a dialog, i.e. the one that gets
activated if the user presses "Enter" when the dialog is initially
posted.</doc>
      </member>
      <member name="visited"
              value="40"
              c:identifier="ATSPI_STATE_VISITED"
              glib:nick="visited">
        <doc xml:space="preserve">This state indicates that the object (typically a
hyperlink) has already been activated or invoked, with the result that
some backing data has been downloaded or rendered.</doc>
      </member>
      <member name="checkable"
              value="41"
              c:identifier="ATSPI_STATE_CHECKABLE"
              glib:nick="checkable">
        <doc xml:space="preserve">Indicates this object has the potential to
 be checked, such as a checkbox or toggle-able table cell. @Since:
 2.12</doc>
      </member>
      <member name="has_popup"
              value="42"
              c:identifier="ATSPI_STATE_HAS_POPUP"
              glib:nick="has-popup">
        <doc xml:space="preserve">Indicates that the object has a popup
context menu or sub-level menu which may or may not be
showing. This means that activation renders conditional content.
Note that ordinary tooltips are not considered popups in this
context. @Since: 2.12</doc>
      </member>
      <member name="read_only"
              value="43"
              c:identifier="ATSPI_STATE_READ_ONLY"
              glib:nick="read-only">
        <doc xml:space="preserve">Indicates that an object which is ENABLED and
SENSITIVE has a value which can be read, but not modified, by the
user. @Since: 2.16</doc>
      </member>
      <member name="last_defined"
              value="44"
              c:identifier="ATSPI_STATE_LAST_DEFINED"
              glib:nick="last-defined">
        <doc xml:space="preserve">This value of the enumeration should not be used
as a parameter, it indicates the number of items in the #AtspiStateType
enumeration.</doc>
      </member>
    </enumeration>
    <constant name="TEXT_BOUNDARY_TYPE_COUNT"
              value="7"
              c:type="ATSPI_TEXT_BOUNDARY_TYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiTextBoundaryType.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="TEXT_CLIP_TYPE_COUNT"
              value="4"
              c:type="ATSPI_TEXT_CLIP_TYPE_COUNT">
      <doc xml:space="preserve">One higher than the highest valid value of #AtspiTextClipType.</doc>
      <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:space="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:space="preserve">#TRUE if the specified column was successfully selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if the specified row was successfully selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">an #AtspiAccessible object representing the
         specified table cell.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets an accessible representation of the caption for an #AtspiTable.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AtspiAccessible object that serves as
the table's caption.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_column_at_index"
              c:identifier="atspi_table_get_column_at_index"
              throws="1">
        <doc xml:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">a UTF-8 string describing the specified table column, if available.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">a #gint indicating the number of columns spanned by the specified cell.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">an #AtspiAccessible representation of the
         specified table column, if available.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">a #gint indicating the number of columns in the table.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_rows"
              c:identifier="atspi_table_get_n_rows"
              throws="1">
        <doc xml:space="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:space="preserve">a #gint indicating the number of rows in the table.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_selected_columns"
              c:identifier="atspi_table_get_n_selected_columns"
              throws="1">
        <doc xml:space="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:space="preserve">a #gint indicating the number of columns currently selected.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_selected_rows"
              c:identifier="atspi_table_get_n_selected_rows"
              throws="1">
        <doc xml:space="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:space="preserve">a #gint indicating the number of rows currently selected.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_row_at_index"
              c:identifier="atspi_table_get_row_at_index"
              throws="1">
        <doc xml:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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:space="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:space="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:space="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:space="preserve">a UTF-8 string describing the specified table row, if available.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">a #gint indicating the number of rows spanned by the specified cell.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">an #AtspiAccessible representation of the specified
         table row, if available.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Queries a table for a list of indices of columns which are currently
selected.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selected_rows"
              c:identifier="atspi_table_get_selected_rows"
              throws="1">
        <doc xml:space="preserve">Queries a table for a list of indices of rows which are currently selected.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_summary"
              c:identifier="atspi_table_get_summary"
              throws="1">
        <doc xml:space="preserve">Gets an accessible object which summarizes the contents of an #AtspiTable.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AtspiAccessible object that serves as the
         table's summary (often a reduced #AtspiTable).</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_column_selected"
              c:identifier="atspi_table_is_column_selected"
              throws="1">
        <doc xml:space="preserve">Determines whether specified table column is selected.
Not all tables support column selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the specified column is currently selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Determines whether a table row is selected.  Not all tables support
row selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the specified row is currently selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Determines whether the cell at a specific row and column is selected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the specified cell is currently selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">#TRUE if the specified column was successfully de-selected,
#FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">#TRUE if the specified row was successfully de-selected,
#FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiTable implementor on which to operate.</doc>
            <type name="Table" c:type="AtspiTable*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the zero-indexed number of the row being de-selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <interface name="TableCell"
               c:symbol-prefix="table_cell"
               c:type="AtspiTableCell"
               glib:type-name="AtspiTableCell"
               glib:get-type="atspi_table_cell_get_type">
      <method name="get_column_header_cells"
              c:identifier="atspi_table_cell_get_column_header_cells"
              throws="1">
        <doc xml:space="preserve">Returns the column headers as an array of cell accessibles.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a GPtrArray of
AtspiAccessibles representing the column header cells.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_column_index"
              c:identifier="atspi_table_cell_get_column_index"
              throws="1">
        <doc xml:space="preserve">Translates this cell accessible into the corresponding column index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the column index for this cell, or -1 if unimplemented.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_column_span"
              c:identifier="atspi_table_cell_get_column_span"
              throws="1">
        <doc xml:space="preserve">Returns the number of columns occupied by this cell accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a gint representing the number of columns occupied by this cell,
or 0 if the cell does not implement this method.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_row_column_span"
              c:identifier="atspi_table_cell_get_row_column_span"
              throws="1">
        <doc xml:space="preserve">Gets the row and column indexes and extents of this cell accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
          <parameter name="row"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the row index of the given cell.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="column"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the column index of the given cell.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="row_span"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the number of rows occupied by this cell.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="column_span"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the number of columns occupied by this cell.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_header_cells"
              c:identifier="atspi_table_cell_get_row_header_cells"
              throws="1">
        <doc xml:space="preserve">Returns the row headers as an array of cell accessibles.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a GPtrArray of
AtspiAccessibles representing the row header cells.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_row_index"
              c:identifier="atspi_table_cell_get_row_index"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_row_span"
              c:identifier="atspi_table_cell_get_row_span"
              throws="1">
        <doc xml:space="preserve">Returns the number of rows occupied by this cell accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a gint representing the number of rows occupied by this cell,
or 0 if the cell does not implement this method.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_table"
              c:identifier="atspi_table_cell_get_table"
              throws="1">
        <doc xml:space="preserve">Returns a reference to the accessible of the containing table.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the AtspiAccessible for the containing table.</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a GObject instance that implements AtspiTableCellIface</doc>
            <type name="TableCell" c:type="AtspiTableCell*"/>
          </instance-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:space="preserve">Selects some text (adds a text selection) in an #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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"
              shadows="get_text_attribute_value"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Gets the value of a named attribute at a given offset.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_text_get_text_attribute_value instead.</doc-deprecated>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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"
              shadows="get_text_attributes"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="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>
        <doc-deprecated xml:space="preserve">Use atspi_text_get_text_attributes instead.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">the x extent of the bounding box.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the y extent of the bounding box.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">Gets the current offset of the text caret in an #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #gint indicating the current position of the text caret.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_character_at_offset"
              c:identifier="atspi_text_get_character_at_offset"
              throws="1">
        <doc xml:space="preserve">Gets the character at a given offset for an #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Gets the character count of an #AccessibleText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #gint indicating the total number of
             characters in the #AccessibleText object.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_character_extents"
              c:identifier="atspi_text_get_character_extents"
              throws="1">
        <doc xml:space="preserve">Gets a bounding box containing the glyph representing
       the character at a particular text offset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #AtspiRect specifying the position and size of the character.</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_selections"
              c:identifier="atspi_text_get_n_selections"
              throws="1">
        <doc xml:space="preserve">Gets the number of active non-contiguous selections for an
         #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_offset_at_point"
              c:identifier="atspi_text_get_offset_at_point"
              throws="1">
        <doc xml:space="preserve">Gets the character offset into the text at a given point.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="preserve">Gets the bounding box for text within a range in an  #AtspiText object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #AtspiRect giving the position and size of the specified range
         of text.</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:space="preserve">a #gint indicating which selection to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string_at_offset"
              c:identifier="atspi_text_get_string_at_offset"
              version="2.9.90"
              throws="1">
        <doc xml:space="preserve">Gets a portion of the text exposed through an #AtspiText according to a given @offset
and a specific @granularity, along with the start and end offsets defining the
boundaries of such a portion of text.

If @granularity is ATSPI_TEXT_GRANULARITY_CHAR the character at the
offset is returned.

If @granularity is ATSPI_TEXT_GRANULARITY_WORD the returned string
is from the word start at or before the offset to the word start after
the offset.

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

If @granularity is ATSPI_TEXT_GRANULARITY_SENTENCE the returned string
is from the sentence start at or before the offset to the sentence
start after the offset.

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

If @granularity is ATSPI_TEXT_GRANULARITY_LINE the returned string
is from the line start at or before the offset to the line
start after the offset.

If @granularity is ATSPI_TEXT_GRANULARITY_PARAGRAPH the returned string
is from the start of the paragraph at or before the offset to the start
of the following paragraph after the offset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the text at the @offset bounded
  by the specified @granularity. Use g_free() to free the returned string.
  Returns %NULL if the offset is invalid or no implementation is available.</doc>
          <type name="TextRange" c:type="AtspiTextRange*"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">an #AtspiText</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="granularity" transfer-ownership="none">
            <doc xml:space="preserve">An #AtspiTextGranularity</doc>
            <type name="TextGranularity" c:type="AtspiTextGranularity"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="atspi_text_get_text" throws="1">
        <doc xml:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">Gets delimited text from an #AtspiText object which follows a given
         text offset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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"
              deprecated="1"
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Gets delimited text from an #AtspiText object which includes a given
         text offset.</doc>
        <doc-deprecated xml:space="preserve">Use atspi_text_get_string_at_offset.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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_attribute_value"
              c:identifier="atspi_text_get_text_attribute_value"
              shadowed-by="get_attribute_value"
              throws="1">
        <doc xml:space="preserve">Gets the value of a named attribute at a given offset.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="preserve">The attribute to query.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_attributes"
              c:identifier="atspi_text_get_text_attributes"
              shadowed-by="get_attributes"
              throws="1">
        <doc xml:space="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:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object to query.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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_text_before_offset"
              c:identifier="atspi_text_get_text_before_offset"
              throws="1">
        <doc xml:space="preserve">Gets delimited text from an #AtspiText object which precedes a given
         text offset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="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>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="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:space="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:space="preserve">De-selects a text selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Moves the text caret to a given position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="new_offset" transfer-ownership="none">
            <doc xml:space="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:space="preserve">Changes the bounds of an existing #AtspiText text selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiText object on which to operate.</doc>
            <type name="Text" c:type="AtspiText*"/>
          </instance-parameter>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:space="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:space="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:space="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"
                 glib:type-name="AtspiTextBoundaryType"
                 glib:get-type="atspi_text_boundary_type_get_type"
                 c:type="AtspiTextBoundaryType">
      <doc xml:space="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.

This enumerationis deprecated since 2.9.90 and should not be used. Use
AtspiTextGranularity with #atspi_text_get_string_at_offset instead.</doc>
      <member name="char"
              value="0"
              c:identifier="ATSPI_TEXT_BOUNDARY_CHAR"
              glib:nick="char">
        <doc xml:space="preserve">An #AtspiText instance is bounded by this
character only. Start and end offsets differ by one, by definition,
for this value.</doc>
      </member>
      <member name="word_start"
              value="1"
              c:identifier="ATSPI_TEXT_BOUNDARY_WORD_START"
              glib:nick="word-start">
        <doc xml:space="preserve">Boundary condition is start of a word; i.e.
range is from start of one word to the start of another word.</doc>
      </member>
      <member name="word_end"
              value="2"
              c:identifier="ATSPI_TEXT_BOUNDARY_WORD_END"
              glib:nick="word-end">
        <doc xml:space="preserve">Boundary condition is the end of a word; i.e.
range is from the end of one word to the end of another. Some locales
may not distinguish between words and characters or glyphs. In particular,
those locales which use wholly or partially ideographic character sets.
In these cases, characters may be returned in lieu of multi-character
substrings.</doc>
      </member>
      <member name="sentence_start"
              value="3"
              c:identifier="ATSPI_TEXT_BOUNDARY_SENTENCE_START"
              glib:nick="sentence-start">
        <doc xml:space="preserve">Boundary condition is start of a
sentence, as determined by the application. Some locales or
character sets may not include explicit sentence delimiters, so this
boundary type can not always be honored. Some locales will return lines
of text instead of grammatical sentences.</doc>
      </member>
      <member name="sentence_end"
              value="4"
              c:identifier="ATSPI_TEXT_BOUNDARY_SENTENCE_END"
              glib:nick="sentence-end">
        <doc xml:space="preserve">Boundary condition is end of a sentence,
as determined by the application, including the sentence-delimiting
character, for instance '.' Some locales or character sets may not
include explicit sentence delimiters, so this boundary type can not
always be honored. Some locales will return lines of text instead of
grammatical sentences.</doc>
      </member>
      <member name="line_start"
              value="5"
              c:identifier="ATSPI_TEXT_BOUNDARY_LINE_START"
              glib:nick="line-start">
        <doc xml:space="preserve">Boundary condition is the start of a line;
i.e. range is from start of one line to the start of another.  This
generally means that an end-of-line character will appear at the end of
the range.</doc>
      </member>
      <member name="line_end"
              value="6"
              c:identifier="ATSPI_TEXT_BOUNDARY_LINE_END"
              glib:nick="line-end">
        <doc xml:space="preserve">Boundary condition is the end of a line; i.e.
range is from start of one line to the start of another.  This generally
means that an end-of-line character will be the first character of the
range.</doc>
      </member>
    </enumeration>
    <enumeration name="TextClipType"
                 glib:type-name="AtspiTextClipType"
                 glib:get-type="atspi_text_clip_type_get_type"
                 c:type="AtspiTextClipType">
      <doc xml:space="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"
              glib:nick="none">
        <doc xml:space="preserve">No characters/glyphs are omitted.</doc>
      </member>
      <member name="min"
              value="1"
              c:identifier="ATSPI_TEXT_CLIP_MIN"
              glib:nick="min">
        <doc xml:space="preserve">Characters/glyphs clipped by the minimum coordinate
are omitted.</doc>
      </member>
      <member name="max"
              value="2"
              c:identifier="ATSPI_TEXT_CLIP_MAX"
              glib:nick="max">
        <doc xml:space="preserve">Characters/glyphs which intersect the maximum
coordinate are omitted.</doc>
      </member>
      <member name="both"
              value="3"
              c:identifier="ATSPI_TEXT_CLIP_BOTH"
              glib:nick="both">
        <doc xml:space="preserve">Only glyphs falling entirely within the region
bounded by min and max are retained.</doc>
      </member>
    </enumeration>
    <enumeration name="TextGranularity"
                 glib:type-name="AtspiTextGranularity"
                 glib:get-type="atspi_text_granularity_get_type"
                 c:type="AtspiTextGranularity">
      <doc xml:space="preserve">Text granularity types used for specifying the granularity of the region of
text we are interested in.</doc>
      <member name="char"
              value="0"
              c:identifier="ATSPI_TEXT_GRANULARITY_CHAR"
              glib:nick="char">
        <doc xml:space="preserve">Granularity is defined by the boundaries between characters
(including non-printing characters)</doc>
      </member>
      <member name="word"
              value="1"
              c:identifier="ATSPI_TEXT_GRANULARITY_WORD"
              glib:nick="word">
        <doc xml:space="preserve">Granularity is defined by the boundaries of a word,
starting at the beginning of the current word and finishing at the beginning of
the following one, if present.</doc>
      </member>
      <member name="sentence"
              value="2"
              c:identifier="ATSPI_TEXT_GRANULARITY_SENTENCE"
              glib:nick="sentence">
        <doc xml:space="preserve">Granularity is defined by the boundaries of a sentence,
starting at the beginning of the current sentence and finishing at the beginning of
the following one, if present.</doc>
      </member>
      <member name="line"
              value="3"
              c:identifier="ATSPI_TEXT_GRANULARITY_LINE"
              glib:nick="line">
        <doc xml:space="preserve">Granularity is defined by the boundaries of a line,
starting at the beginning of the current line and finishing at the beginning of
the following one, if present.</doc>
      </member>
      <member name="paragraph"
              value="4"
              c:identifier="ATSPI_TEXT_GRANULARITY_PARAGRAPH"
              glib:nick="paragraph">
        <doc xml:space="preserve">Granularity is defined by the boundaries of a paragraph,
starting at the beginning of the current paragraph and finishing at the beginning of
the following one, if present.</doc>
      </member>
    </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:space="preserve">Gets the current value for an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current value for this object.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiValue implementor on which to operate.</doc>
            <type name="Value" c:type="AtspiValue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_maximum_value"
              c:identifier="atspi_value_get_maximum_value"
              throws="1">
        <doc xml:space="preserve">Gets the maximum allowed value for an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the maximum allowed value for this object.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiValue implementor on which to operate.</doc>
            <type name="Value" c:type="AtspiValue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_minimum_increment"
              c:identifier="atspi_value_get_minimum_increment"
              throws="1">
        <doc xml:space="preserve">Gets the minimum increment by which an #AtspiValue can be adjusted.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="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>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiValue implementor on which to operate.</doc>
            <type name="Value" c:type="AtspiValue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_minimum_value"
              c:identifier="atspi_value_get_minimum_value"
              throws="1">
        <doc xml:space="preserve">Gets the minimum allowed value for an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the minimum allowed value for this object.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiValue implementor on which to operate.</doc>
            <type name="Value" c:type="AtspiValue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_current_value"
              c:identifier="atspi_value_set_current_value"
              throws="1">
        <doc xml:space="preserve">Sets the current value of an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if the value could be assigned the specified value,
         #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to the #AtspiValue implementor on which to operate.</doc>
            <type name="Value" c:type="AtspiValue*"/>
          </instance-parameter>
          <parameter name="new_value" transfer-ownership="none">
            <doc xml:space="preserve">a #gdouble value which is the desired new value of the object.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <function name="dbus_connection_setup_with_g_main"
              c:identifier="atspi_dbus_connection_setup_with_g_main"
              introspectable="0">
      <doc xml:space="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:space="preserve">the connection</doc>
          <type c:type="DBusConnection*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="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:space="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:space="preserve">the server</doc>
          <type c:type="DBusServer*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="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:space="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:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:space="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"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="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:space="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:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:space="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"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="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:space="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:space="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:space="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:space="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:space="preserve">Disconnects from #AtspiRegistry instances and releases
any floating resources. Call only once at exit.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="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:space="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:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="keyval" transfer-ownership="none">
          <doc xml:space="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"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">an (optional) UTF-8 string which, if
          @synth_type is %ATSPI_KEY_STRING, 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:space="preserve">an #AtspiKeySynthType flag indicating whether @keyval
          is to be interpreted as a keysym rather than a keycode
          (%ATSPI_KEY_SYM) or a string (%ATSPI_KEY_STRING), 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:space="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:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="x" transfer-ownership="none">
          <doc xml:space="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:space="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:space="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:space="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:space="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:space="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:space="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:space="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:space="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:space="preserve">a #GArray of
desktops.</doc>
        <array name="GLib.Array" c:type="GArray*">
          <type name="Accessible"/>
        </array>
      </return-value>
    </function>
    <function name="init" c:identifier="atspi_init">
      <doc xml:space="preserve">Connects to the accessibility registry and initializes the SPI.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">0 on success, 1 if already initialized, or an integer error code.</doc>
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="is_initialized" c:identifier="atspi_is_initialized">
      <doc xml:space="preserve">Indicates whether AT-SPI has been initialized.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%True if initialized; %False otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="register_device_event_listener"
              c:identifier="atspi_register_device_event_listener"
              throws="1">
      <doc xml:space="preserve">Registers a listener for device events, for instance button events.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:space="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:space="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"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="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:space="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:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:space="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"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="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:space="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:space="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:space="preserve">an #AtspiKeyListenerSyncType parameter indicating
            the behavior of the notification/listener transaction.</doc>
          <type name="KeyListenerSyncType" c:type="AtspiKeyListenerSyncType"/>
        </parameter>
      </parameters>
    </function>
    <function name="role_get_name"
              c:identifier="atspi_role_get_name"
              moved-to="Role.get_name">
      <doc xml:space="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:space="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:space="preserve">an #AtspiRole object to query.</doc>
          <type name="Role" c:type="AtspiRole"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_main_context" c:identifier="atspi_set_main_context">
      <doc xml:space="preserve">Sets the main loop context that AT-SPI should assume is in use when
setting an idle callback.
This function should be called by application-side implementors (ie,
at-spi2-atk) when it is desirable to re-enter the main loop.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cnx" transfer-ownership="none">
          <doc xml:space="preserve">The #GMainContext to use.</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_timeout" c:identifier="atspi_set_timeout">
      <doc xml:space="preserve">Set the timeout used for method calls. If this is not set explicitly,
a default of 0.8 ms is used.
Note that at-spi2-registryd currently uses a timeout of 3 seconds when
sending a keyboard event notification. This means that, if an AT makes
a call in response to the keyboard notification and the application
being called does not respond before the timeout is reached,
at-spi2-registryd will time out on the keyboard event notification and
pass the key onto the application (ie, reply to indicate that the key
was not consumed), so this may make it undesirable to set a timeout
larger than 3 seconds.

By default, the normal timeout is set to 800 ms, and the application startup
timeout is set to 15 seconds.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="val" transfer-ownership="none">
          <doc xml:space="preserve">The timeout value, in milliseconds, or -1 to disable the timeout.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="startup_time" transfer-ownership="none">
          <doc xml:space="preserve">The amount of time, in milliseconds, to allow to pass
before enforcing timeouts on an application. Can be used to prevent
timeout exceptions if an application is likely to block for an extended
period of time on initialization. -1 can be passed to disable this
behavior.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
