<?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.1"
             c:identifier-prefixes="Atspi"
             c:symbol-prefixes="atspi">
    <alias name="ControllerEventMask" c:type="AtspiControllerEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="DeviceEventMask" c:type="AtspiDeviceEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeyEventMask" c:type="AtspiKeyEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeyMaskType" c:type="AtspiKeyMaskType">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeystrokeListener" c:type="AtspiKeystrokeListener">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <class name="Accessible"
           c:symbol-prefix="accessible"
           c:type="AtspiAccessible"
           parent="Object"
           glib:type-name="AtspiAccessible"
           glib:get-type="atspi_accessible_get_type"
           glib:type-struct="AccessibleClass">
      <implements name="Action"/>
      <implements name="Collection"/>
      <implements name="Component"/>
      <implements name="Document"/>
      <implements name="EditableText"/>
      <implements name="Hypertext"/>
      <implements name="Image"/>
      <implements name="Selection"/>
      <implements name="Table"/>
      <implements name="Text"/>
      <implements name="Value"/>
      <method name="clear_cache" c:identifier="atspi_accessible_clear_cache">
        <doc xml: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="Use atspi_accessible_get_action_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_collection_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_component_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_document_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_editable_text_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_hypertext_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_image_iface instead."
              deprecated-version="2.10">
        <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_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">
          <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 -1 if defunct.</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="Accessible"/>
          </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="Use atspi_accessible_get_selection_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_table_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_text_iface instead."
              deprecated-version="2.10">
        <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_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="Use atspi_accessible_get_value_iface instead."
              deprecated-version="2.10">
        <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="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>
    </class>
    <record name="AccessibleClass"
            c:type="AtspiAccessibleClass"
            glib:is-gtype-struct-for="Accessible">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtspiObjectClass"/>
      </field>
    </record>
    <interface name="Action"
               c:symbol-prefix="action"
               c:type="AtspiAction"
               glib:type-name="AtspiAction"
               glib:get-type="atspi_action_get_type">
      <method name="do_action"
              c:identifier="atspi_action_do_action"
              throws="1">
        <doc xml: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="Use atspi_action_get_action_description instead."
              deprecated-version="2.10"
              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="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="Use atspi_action_get_action_name instead."
              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>
        <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="interfaces"
              value="64"
              c:identifier="ATSPI_CACHE_INTERFACES"
              glib:nick="interfaces">
      </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"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Not yet implemented.</doc>
        <return-value>
          <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">
          <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">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful; #FALSE otherwise.  Moves the component to the specified position.</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">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#TRUE if successful; #FALSE otherwise.  Resizes the specified component to the given coordinates.</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_TEXT"
              value="org.a11y.atspi.Text"
              c:type="ATSPI_DBUS_INTERFACE_TEXT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_VALUE"
              value="org.a11y.atspi.Value"
              c:type="ATSPI_DBUS_INTERFACE_VALUE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_NAME_REGISTRY"
              value="org.a11y.atspi.Registry"
              c:type="ATSPI_DBUS_NAME_REGISTRY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_DEC"
              value="/org/a11y/atspi/registry/deviceeventcontroller"
              c:type="ATSPI_DBUS_PATH_DEC">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_NULL"
              value="/org/a11y/atspi/null"
              c:type="ATSPI_DBUS_PATH_NULL">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_REGISTRY"
              value="/org/a11y/atspi/registry"
              c:type="ATSPI_DBUS_PATH_REGISTRY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_ROOT"
              value="/org/a11y/atspi/accessible/root"
              c:type="ATSPI_DBUS_PATH_ROOT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="DeviceEvent" c:type="AtspiDeviceEvent">
      <field name="type" writable="1">
        <type name="EventType" c:type="AtspiEventType"/>
      </field>
      <field name="id" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="hw_code" writable="1">
        <type name="gushort" c:type="gushort"/>
      </field>
      <field name="modifiers" writable="1">
        <type name="gushort" c:type="gushort"/>
      </field>
      <field name="timestamp" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="event_string" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="is_text" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <class name="DeviceListener"
           c:symbol-prefix="device_listener"
           c:type="AtspiDeviceListener"
           parent="GObject.Object"
           glib:type-name="AtspiDeviceListener"
           glib:get-type="atspi_device_listener_get_type"
           glib:type-struct="DeviceListenerClass">
      <constructor name="new" c:identifier="atspi_device_listener_new">
        <doc xml: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="arg0" transfer-ownership="none">
            <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
          </instance-parameter>
          <parameter name="arg1" 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="arg0" transfer-ownership="none">
              <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
            </parameter>
            <parameter name="arg1" 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="Use atspi_document_get_document_attribute_value instead."
              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>
        <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="Use atspi_document_get_document_attributes instead."
              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>
        <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_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>
    </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>
    </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_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>
      <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="const 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">
          <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>
    <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="91" 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"
                 version="2.8"
                 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 object that presents text to the user, of nonspecific type.</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">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.</doc>
      </member>
      <member name="last_defined"
              value="104"
              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 is an active subelement within a container or table.</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="last_defined"
              value="41"
              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="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="Use atspi_text_get_text_attribute_value instead."
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Gets the value of a named attribute at a given offset.</doc>
        <return-value transfer-ownership="full">
          <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="Use atspi_text_get_text_attributes instead."
              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>
        <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">
            <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="Use atspi_text_get_string_at_offset."
              deprecated-version="2.10"
              throws="1">
        <doc xml:space="preserve">Gets delimited text from an #AtspiText object which includes 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, 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">
          <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>
    <record name="_KeySet" c:type="_AtspiKeySet">
      <field name="keysyms" writable="1">
        <type name="guint" c:type="guint*"/>
      </field>
      <field name="keycodes" writable="1">
        <type name="gushort" c:type="gushort*"/>
      </field>
      <field name="keystrings" writable="1">
        <type name="utf8" c:type="gchar**"/>
      </field>
      <field name="len" writable="1">
        <type name="gshort" c:type="gshort"/>
      </field>
    </record>
    <function name="dbus_connection_setup_with_g_main"
              c:identifier="atspi_dbus_connection_setup_with_g_main"
              introspectable="0">
      <doc xml: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" 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" 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" 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"
              introspectable="0">
      <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="gpointer" c:type="gpointer"/>
        </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" 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" 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">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cnx" transfer-ownership="none">
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_timeout" c:identifier="atspi_set_timeout">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="val" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="startup_time" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
