2009-07-06 Mark Doffman <mark.doffman@codethink.co.uk>
authorMark Doffman <mdoff@altair-voyager.(none)>
Mon, 6 Jul 2009 15:37:48 +0000 (16:37 +0100)
committerMark Doffman <mdoff@altair-voyager.(none)>
Mon, 6 Jul 2009 15:37:48 +0000 (16:37 +0100)
        Re-organize the build configuration to use an external registryd,
        dbind and droute libraries from at-spi2-core.

131 files changed:
Makefile.am
atk-adaptor/Makefile.am
atk-adaptor/accessible-adaptor.c
atk-adaptor/accessible-marshaller.c
atk-adaptor/action-adaptor.c
atk-adaptor/application-adaptor.c
atk-adaptor/bridge.c
atk-adaptor/collection-adaptor.c
atk-adaptor/component-adaptor.c
atk-adaptor/document-adaptor.c
atk-adaptor/editabletext-adaptor.c
atk-adaptor/event.c
atk-adaptor/event.h
atk-adaptor/hyperlink-adaptor.c
atk-adaptor/hypertext-adaptor.c
atk-adaptor/image-adaptor.c
atk-adaptor/relation-adaptor.c
atk-adaptor/selection-adaptor.c
atk-adaptor/table-adaptor.c
atk-adaptor/text-adaptor.c
atk-adaptor/tree-adaptor.c
atk-adaptor/value-adaptor.c
common/Makefile.am [moved from spi-common/Makefile.am with 100% similarity]
common/bitarray.h [moved from spi-common/bitarray.h with 100% similarity]
common/event-types.h [moved from spi-common/event-types.h with 100% similarity]
common/generated-types.h [moved from spi-common/generated-types.h with 100% similarity]
common/keymasks.h [moved from spi-common/keymasks.h with 100% similarity]
common/spi-dbus.c [moved from spi-common/spi-dbus.c with 100% similarity]
common/spi-dbus.h [moved from spi-common/spi-dbus.h with 99% similarity]
common/spi-stateset.c [moved from spi-common/spi-stateset.c with 100% similarity]
common/spi-stateset.h [moved from spi-common/spi-stateset.h with 100% similarity]
common/spi-types.h [moved from spi-common/spi-types.h with 93% similarity]
configure.ac
cspi/Makefile.am
cspi/spi-accessible.c
cspi/spi-listener.h
cspi/spi-private.h
cspi/spi.h
dbind-config.h.in [deleted file]
dbind/Makefile.am [deleted file]
dbind/dbind-any.c [deleted file]
dbind/dbind-any.h [deleted file]
dbind/dbind.c [deleted file]
dbind/dbind.h [deleted file]
dbind/dbtest.c [deleted file]
droute/Makefile.am [deleted file]
droute/droute-pairhash.c [deleted file]
droute/droute-pairhash.h [deleted file]
droute/droute-test.c [deleted file]
droute/droute-variant.c [deleted file]
droute/droute-variant.h [deleted file]
droute/droute.c [deleted file]
droute/droute.h [deleted file]
droute/test.interface.One [deleted file]
droute/test.interface.Two [deleted file]
idl/Accessibility.idl [deleted file]
idl/Accessibility_Accessible.idl [deleted file]
idl/Accessibility_Action.idl [deleted file]
idl/Accessibility_Application.idl [deleted file]
idl/Accessibility_Collection.idl [deleted file]
idl/Accessibility_Component.idl [deleted file]
idl/Accessibility_Desktop.idl [deleted file]
idl/Accessibility_Document.idl [deleted file]
idl/Accessibility_EditableText.idl [deleted file]
idl/Accessibility_Event.idl [deleted file]
idl/Accessibility_Hyperlink.idl [deleted file]
idl/Accessibility_Hypertext.idl [deleted file]
idl/Accessibility_Image.idl [deleted file]
idl/Accessibility_LoginHelper.idl [deleted file]
idl/Accessibility_Registry.idl [deleted file]
idl/Accessibility_Relation.idl [deleted file]
idl/Accessibility_Role.idl [deleted file]
idl/Accessibility_Selection.idl [deleted file]
idl/Accessibility_Selector.idl [deleted file]
idl/Accessibility_State.idl [deleted file]
idl/Accessibility_StreamableContent.idl [deleted file]
idl/Accessibility_Table.idl [deleted file]
idl/Accessibility_Text.idl [deleted file]
idl/Accessibility_Value.idl [deleted file]
idl/Makefile.am [deleted file]
libloginhelper-1.0.pc.in [deleted file]
login-helper/Makefile.am [deleted file]
login-helper/login-helper.c [deleted file]
login-helper/login-helper.h [deleted file]
pkgconfig/Makefile.am [new file with mode: 0644]
pkgconfig/cspi-1.0-uninstalled.pc.in [moved from cspi-1.0-uninstalled.pc.in with 77% similarity]
pkgconfig/cspi-1.0.pc.in [moved from cspi-1.0.pc.in with 92% similarity]
registryd/Makefile.am [deleted file]
registryd/deviceeventcontroller.c [deleted file]
registryd/deviceeventcontroller.h [deleted file]
registryd/reentrant-list.c [deleted file]
registryd/reentrant-list.h [deleted file]
registryd/registry-main.c [deleted file]
registryd/registry.c [deleted file]
registryd/registry.h [deleted file]
registryd/testregistry.py [deleted file]
registryd/ucs2keysym.c [deleted file]
tests/cspi/Makefile.am
tests/cspi/keysynth-test.c
tools/Makefile.am [deleted file]
tools/c-constants-generator.xsl [deleted file]
tools/doc-generator.xsl [deleted file]
tools/identity.xsl [deleted file]
tools/spec-to-introspect.xsl [deleted file]
xml/Accessibility.xml [deleted file]
xml/Makefile.am [deleted file]
xml/introspection/README [deleted file]
xml/org.freedesktop.atspi.Accessible.xml [deleted file]
xml/org.freedesktop.atspi.Action.xml [deleted file]
xml/org.freedesktop.atspi.Application.xml [deleted file]
xml/org.freedesktop.atspi.Collection.xml [deleted file]
xml/org.freedesktop.atspi.Component.xml [deleted file]
xml/org.freedesktop.atspi.Desktop.xml [deleted file]
xml/org.freedesktop.atspi.DeviceEvent.xml [deleted file]
xml/org.freedesktop.atspi.DeviceEventController.xml [deleted file]
xml/org.freedesktop.atspi.DeviceEventListener.xml [deleted file]
xml/org.freedesktop.atspi.Document.xml [deleted file]
xml/org.freedesktop.atspi.EditableText.xml [deleted file]
xml/org.freedesktop.atspi.Event.xml [deleted file]
xml/org.freedesktop.atspi.Hyperlink.xml [deleted file]
xml/org.freedesktop.atspi.Hypertext.xml [deleted file]
xml/org.freedesktop.atspi.Image.xml [deleted file]
xml/org.freedesktop.atspi.Registry.xml [deleted file]
xml/org.freedesktop.atspi.Relation.xml [deleted file]
xml/org.freedesktop.atspi.Role.xml [deleted file]
xml/org.freedesktop.atspi.Selection.xml [deleted file]
xml/org.freedesktop.atspi.State.xml [deleted file]
xml/org.freedesktop.atspi.Table.xml [deleted file]
xml/org.freedesktop.atspi.Text.xml [deleted file]
xml/org.freedesktop.atspi.Tree.xml [deleted file]
xml/org.freedesktop.atspi.Value.xml [deleted file]

index 3525ebe..99b87a8 100644 (file)
@@ -1,9 +1 @@
-SUBDIRS=xml tools dbind droute spi-common atk-adaptor registryd cspi pyatspi login-helper tests
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = cspi-1.0.pc libloginhelper-1.0.pc
-
-EXTRA_DIST = \
-       cspi-1.0.pc.in \
-       cspi-1.0-uninstalled.pc.in \
-       libloginhelper-1.0.pc.in
+SUBDIRS=common atk-adaptor cspi pyatspi tests
index 2ae7a74..23438b3 100644 (file)
@@ -1,10 +1,11 @@
 gtkmoduledir = $(libdir)/$(GTK_MODULE_DIR)
 gtkmodule_LTLIBRARIES = libspiatk.la
 
 gtkmoduledir = $(libdir)/$(GTK_MODULE_DIR)
 gtkmodule_LTLIBRARIES = libspiatk.la
 
-libspiatk_la_CFLAGS = $(DBUS_GLIB_CFLAGS)\
-                     $(ATK_CFLAGS)\
-                     -I$(top_srcdir)\
-                     -I$(top_srcdir)/atk-adaptor/adaptors\
+libspiatk_la_CFLAGS = $(DBUS_GLIB_CFLAGS)                 \
+                     $(ATK_CFLAGS)                       \
+                     $(DBIND_CFLAGS)                     \
+                     $(DROUTE_CFLAGS)                    \
+                     -I$(top_srcdir)                     \
                      -DATSPI_INTROSPECTION_PATH=\"$(pkgdatadir)/$(DEFAULT_ATSPI_INTROSPECTION_PATH)\"
 
 libspiatk_la_LDFLAGS = -no-undefined       \
                      -DATSPI_INTROSPECTION_PATH=\"$(pkgdatadir)/$(DEFAULT_ATSPI_INTROSPECTION_PATH)\"
 
 libspiatk_la_LDFLAGS = -no-undefined       \
@@ -14,8 +15,9 @@ libspiatk_la_LDFLAGS = -no-undefined       \
 
 libspiatk_la_LIBADD = $(DBUS_GLIB_LIBS)                        \
                      $(ATK_LIBS)                       \
 
 libspiatk_la_LIBADD = $(DBUS_GLIB_LIBS)                        \
                      $(ATK_LIBS)                       \
-                     $(top_builddir)/droute/libdroute.la\
-                     $(top_builddir)/spi-common/libspicommon.la
+                     $(DBIND_LIBS)                     \
+                     $(DROUTE_LIBS)                    \
+                     $(top_builddir)/common/libspicommon.la
 
 libspiatk_la_SOURCES =         \
        accessible-adaptor.c    \
 
 libspiatk_la_SOURCES =         \
        accessible-adaptor.c    \
index 5029acc..4f03140 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 #include "accessible-marshaller.h"
 #include "accessible-register.h"
 
 #include "accessible-marshaller.h"
 #include "accessible-register.h"
 
index d8d069f..80fc86b 100644 (file)
@@ -20,7 +20,7 @@
  * Boston, MA 02111-1307, USA.
  */
 
  * Boston, MA 02111-1307, USA.
  */
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 #include "accessible-register.h"
 #include "accessible-marshaller.h"
 
 #include "accessible-register.h"
 #include "accessible-marshaller.h"
index b26a768..bb00541 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_nActions (DBusMessageIter *iter, void *user_data)
 
 static dbus_bool_t
 impl_get_nActions (DBusMessageIter *iter, void *user_data)
index cf6b689..2faefcd 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_toolkitName (DBusMessageIter * iter,
 
 static dbus_bool_t
 impl_get_toolkitName (DBusMessageIter * iter,
index eb2fa75..5d04aee 100644 (file)
@@ -39,7 +39,7 @@
 #include "accessible-register.h"
 #include "adaptors.h"
 
 #include "accessible-register.h"
 #include "adaptors.h"
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 /*
  * Provides the path for the introspection directory.
 
 /*
  * Provides the path for the introspection directory.
index 2826feb..444c1e1 100644 (file)
@@ -30,8 +30,8 @@
 #include "accessible-register.h"
 #include "accessible-marshaller.h"
 
 #include "accessible-register.h"
 #include "accessible-marshaller.h"
 
-#include "spi-common/bitarray.h"
-#include "spi-common/spi-dbus.h"
+#include "common/bitarray.h"
+#include "common/spi-dbus.h"
 
 typedef struct _MatchRulePrivate MatchRulePrivate;
 struct _MatchRulePrivate
 
 typedef struct _MatchRulePrivate MatchRulePrivate;
 struct _MatchRulePrivate
index 7e96ef9..5f0e104 100644 (file)
@@ -26,7 +26,7 @@
 #include <droute/droute.h>
 
 #include "accessible-marshaller.h"
 #include <droute/droute.h>
 
 #include "accessible-marshaller.h"
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static DBusMessage *
 impl_contains (DBusConnection * bus, DBusMessage * message, void *user_data)
 
 static DBusMessage *
 impl_contains (DBusConnection * bus, DBusMessage * message, void *user_data)
index 449368f..badd38a 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static DBusMessage *
 impl_getLocale (DBusConnection *bus,
 
 static DBusMessage *
 impl_getLocale (DBusConnection *bus,
index 417b24d..d088154 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static DBusMessage *
 impl_setTextContents (DBusConnection * bus, DBusMessage * message,
 
 static DBusMessage *
 impl_setTextContents (DBusConnection * bus, DBusMessage * message,
index 3d1250e..2039b63 100644 (file)
@@ -30,7 +30,7 @@
 #include "bridge.h"
 #include "accessible-register.h"
 
 #include "bridge.h"
 #include "accessible-register.h"
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static GArray *listener_ids = NULL;
 
 
 static GArray *listener_ids = NULL;
 
index d62f9ce..ecd3fd9 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef EVENT_H
 #define EVENT_H
 
 #ifndef EVENT_H
 #define EVENT_H
 
-#include <spi-common/spi-types.h>
+#include <common/spi-types.h>
 
 void spi_atk_register_event_listeners   (void);
 void spi_atk_deregister_event_listeners (void);
 
 void spi_atk_register_event_listeners   (void);
 void spi_atk_deregister_event_listeners (void);
index 98ae486..34d51a7 100644 (file)
@@ -26,7 +26,7 @@
 #include <droute/droute.h>
 
 #include "accessible-marshaller.h"
 #include <droute/droute.h>
 
 #include "accessible-marshaller.h"
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_nAnchors (DBusMessageIter * iter, void *user_data)
 
 static dbus_bool_t
 impl_get_nAnchors (DBusMessageIter * iter, void *user_data)
index 09a6d65..af3334e 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static DBusMessage *
 impl_getNLinks (DBusConnection * bus, DBusMessage * message, void *user_data)
 
 static DBusMessage *
 impl_getNLinks (DBusConnection * bus, DBusMessage * message, void *user_data)
index 966ec38..500ea23 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_imageDescription (DBusMessageIter * iter,
 
 static dbus_bool_t
 impl_get_imageDescription (DBusMessageIter * iter,
index 12edc7a..57267cb 100644 (file)
@@ -29,8 +29,8 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-types.h"
-#include "spi-common/spi-dbus.h"
+#include "common/spi-types.h"
+#include "common/spi-dbus.h"
 
 static gboolean
 spi_init_relation_type_table (Accessibility_RelationType *types)
 
 static gboolean
 spi_init_relation_type_table (Accessibility_RelationType *types)
index 5e1c4ab..31b4c84 100644 (file)
@@ -25,7 +25,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 #include "accessible-marshaller.h"
 
 static dbus_bool_t
 #include "accessible-marshaller.h"
 
 static dbus_bool_t
index 7ba03f2..4356e71 100644 (file)
@@ -26,7 +26,7 @@
 #include <droute/droute.h>
 
 #include "accessible-marshaller.h"
 #include <droute/droute.h>
 
 #include "accessible-marshaller.h"
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_nRows (DBusMessageIter * iter, void *user_data)
 
 static dbus_bool_t
 impl_get_nRows (DBusMessageIter * iter, void *user_data)
index 323f687..de91f6b 100644 (file)
@@ -27,7 +27,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_characterCount (DBusMessageIter * iter,
 
 static dbus_bool_t
 impl_get_characterCount (DBusMessageIter * iter,
index 78ba624..c3c6c11 100644 (file)
@@ -31,7 +31,7 @@
 #include "bridge.h"
 #include "accessible-register.h"
 #include "accessible-marshaller.h"
 #include "bridge.h"
 #include "accessible-register.h"
 #include "accessible-marshaller.h"
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 /*---------------------------------------------------------------------------*/
 
 
 /*---------------------------------------------------------------------------*/
 
index 68631de..6ca6f5d 100644 (file)
@@ -27,7 +27,7 @@
 #include <atk/atk.h>
 #include <droute/droute.h>
 
 #include <atk/atk.h>
 #include <droute/droute.h>
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 static dbus_bool_t
 impl_get_minimumValue (DBusMessageIter * iter,
 
 static dbus_bool_t
 impl_get_minimumValue (DBusMessageIter * iter,
similarity index 100%
rename from spi-common/Makefile.am
rename to common/Makefile.am
similarity index 100%
rename from spi-common/bitarray.h
rename to common/bitarray.h
similarity index 100%
rename from spi-common/keymasks.h
rename to common/keymasks.h
similarity index 100%
rename from spi-common/spi-dbus.c
rename to common/spi-dbus.c
similarity index 99%
rename from spi-common/spi-dbus.h
rename to common/spi-dbus.h
index 85a5877..4393980 100644 (file)
@@ -25,7 +25,7 @@
 #define SPI_DBUS_H_
 
 #include <glib.h>
 #define SPI_DBUS_H_
 
 #include <glib.h>
-#include <spi-common/spi-types.h>
+#include <common/spi-types.h>
 
 #define DBG(a,b) if(_dbg>=(a))b
 
 
 #define DBG(a,b) if(_dbg>=(a))b
 
similarity index 93%
rename from spi-common/spi-types.h
rename to common/spi-types.h
index 2758310..1293a5c 100644 (file)
@@ -24,7 +24,7 @@
 #ifndef SPI_TYPES_H_
 #define SPI_TYPES_H_
 
 #ifndef SPI_TYPES_H_
 #define SPI_TYPES_H_
 
-#include <spi-common/generated-types.h>
-#include <spi-common/event-types.h>
+#include <common/generated-types.h>
+#include <common/event-types.h>
 
 #endif /* SPI_TYPES_H_ */
 
 #endif /* SPI_TYPES_H_ */
index d56aeff..06add87 100644 (file)
@@ -1,24 +1,20 @@
 
 
-AC_INIT([at-spi], [1.9.0], [accessibility-atspi@lists.linux-foundation.org])
+AC_INIT([at-spi-atk], [2.0.0], [accessibility-atspi@lists.linux-foundation.org])
 AC_CONFIG_AUX_DIR(config)
 
 AC_CONFIG_AUX_DIR(config)
 
-AT_SPI_MAJOR_VERSION=1
-AT_SPI_MINOR_VERSION=23
-AT_SPI_MICRO_VERSION=3
-AT_SPI_INTERFACE_AGE=0
-AT_SPI_BINARY_AGE=0
-AT_SPI_VERSION="$AT_SPI_MAJOR_VERSION.$AT_SPI_MINOR_VERSION.$AT_SPI_MICRO_VERSION"
-AC_SUBST(AT_SPI_MAJOR_VERSION)
-AC_SUBST(AT_SPI_MINOR_VERSION)
-AC_SUBST(AT_SPI_MICRO_VERSION)
-AC_SUBST(AT_SPI_INTERFACE_AGE)
-AC_SUBST(AT_SPI_BINARY_AGE)
+AT_SPI_ATK_MAJOR_VERSION=2
+AT_SPI_ATK_MINOR_VERSION=0
+AT_SPI_ATK_MICRO_VERSION=0
+AT_SPI_ATK_INTERFACE_AGE=0
+AT_SPI_ATK_BINARY_AGE=0
+AT_SPI_ATK_VERSION="$AT_SPI_MAJOR_VERSION.$AT_SPI_MINOR_VERSION"
+AC_SUBST(AT_SPI_ATK_VERSION)
 
 # libtool versioning
 LT_RELEASE=$AT_SPI_MAJOR_VERSION.$AT_SPI_MINOR_VERSION
 
 # libtool versioning
 LT_RELEASE=$AT_SPI_MAJOR_VERSION.$AT_SPI_MINOR_VERSION
-LT_CURRENT=10
-LT_REVISION=11
-LT_AGE=10
+LT_CURRENT=0
+LT_REVISION=0
+LT_AGE=0
 LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
 AC_SUBST(LT_VERSION_INFO)
 AC_SUBST(LT_RELEASE)
 LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
 AC_SUBST(LT_VERSION_INFO)
 AC_SUBST(LT_RELEASE)
@@ -28,31 +24,26 @@ AC_SUBST(LT_AGE)
 
 AM_INIT_AUTOMAKE([-Wall foreign])
 
 
 AM_INIT_AUTOMAKE([-Wall foreign])
 
-dnl translation of any at-spi strings: used only for .server
-dnl IT_PROG_INTLTOOL([0.35.0])
-
 AC_PROG_CC
 AM_PATH_PYTHON(2.4)
 AM_DISABLE_STATIC
 AM_PROG_LIBTOOL
 PKG_PROG_PKG_CONFIG
 
 AC_PROG_CC
 AM_PATH_PYTHON(2.4)
 AM_DISABLE_STATIC
 AM_PROG_LIBTOOL
 PKG_PROG_PKG_CONFIG
 
-GETTEXT_PACKAGE="${PACKAGE}"
-AC_SUBST(GETTEXT_PACKAGE)
-dnl internationalization support; uncomment if translatable strings are reintroduced
-AM_GLIB_GNU_GETTEXT
-
-# AM_GLIB_GNU_GETTEXT above subst. $DATADIRNAME
-# this is the directory where the *.{mo,gmo} files are installed
-localedir='${prefix}/${DATADIRNAME}/locale'
-AC_SUBST(localedir)
-
 AC_CONFIG_HEADERS([config.h])
 
 PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.0])
 AC_SUBST(DBUS_LIBS)
 AC_SUBST(DBUS_CFLAGS)
 
 AC_CONFIG_HEADERS([config.h])
 
 PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.0])
 AC_SUBST(DBUS_LIBS)
 AC_SUBST(DBUS_CFLAGS)
 
+PKG_CHECK_MODULES(DROUTE, [droute-0.1 >= 0.1])
+AC_SUBST(DROUTE_LIBS)
+AC_SUBST(DROUTE_CFLAGS)
+
+PKG_CHECK_MODULES(DBIND, [dbind-0.1 >= 0.1])
+AC_SUBST(DBIND_LIBS)
+AC_SUBST(DBIND_CFLAGS)
+
 PKG_CHECK_MODULES(GLIB, [glib-2.0])
 AC_SUBST(GLIB_LIBS)
 AC_SUBST(GLIB_CFLAGS)
 PKG_CHECK_MODULES(GLIB, [glib-2.0])
 AC_SUBST(GLIB_LIBS)
 AC_SUBST(GLIB_CFLAGS)
@@ -61,10 +52,6 @@ PKG_CHECK_MODULES(DBUS_GLIB, [dbus-glib-1 >= 0.7.0])
 AC_SUBST(DBUS_GLIB_LIBS)
 AC_SUBST(DBUS_GLIB_CFLAGS)
 
 AC_SUBST(DBUS_GLIB_LIBS)
 AC_SUBST(DBUS_GLIB_CFLAGS)
 
-PKG_CHECK_MODULES(LIB_XML, [libxml-2.0 >= 2.0.0])
-AC_SUBST(LIB_XML_LIBS)
-AC_SUBST(LIB_XML_CFLAGS)
-
 PKG_CHECK_MODULES(GOBJ, [gobject-2.0 >= 2.0.0])
 AC_SUBST(GOBJ_LIBS)
 AC_SUBST(GOBJ_CFLAGS)
 PKG_CHECK_MODULES(GOBJ, [gobject-2.0 >= 2.0.0])
 AC_SUBST(GOBJ_LIBS)
 AC_SUBST(GOBJ_CFLAGS)
@@ -73,6 +60,10 @@ PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.0.0])
 AC_SUBST(GMODULE_LIBS)
 AC_SUBST(GMODULE_CFLAGS)
 
 AC_SUBST(GMODULE_LIBS)
 AC_SUBST(GMODULE_CFLAGS)
 
+PKG_CHECK_MODULES(LIB_XML, [libxml-2.0 >= 2.0.0])
+AC_SUBST(LIB_XML_LIBS)
+AC_SUBST(LIB_XML_CFLAGS)
+
 PKG_CHECK_MODULES(ATK, [atk >= 1.17.0])
 AC_SUBST(ATK_LIBS)
 AC_SUBST(ATK_CFLAGS)
 PKG_CHECK_MODULES(ATK, [atk >= 1.17.0])
 AC_SUBST(ATK_LIBS)
 AC_SUBST(ATK_CFLAGS)
@@ -81,65 +72,8 @@ PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.10.0])
 AC_SUBST(GTK_LIBS)
 AC_SUBST(GTK_CFLAGS)
 
 AC_SUBST(GTK_LIBS)
 AC_SUBST(GTK_CFLAGS)
 
-PKG_CHECK_MODULES(GDK, [gdk-2.0 >= 2.0.0])
-AC_SUBST(GDK_LIBS)
-AC_SUBST(GDK_CFLAGS)
-
 AC_PATH_XTRA
 
 AC_PATH_XTRA
 
-if test x$no_x = xyes ; then
-       AC_MSG_ERROR([X development libraries not found])
-else
-       X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
-fi
-AC_SUBST(X_LIBS)
-
-#LIBS="$LIBS $X_LIBS"
-AC_CHECK_LIB(Xtst, XTestFakeKeyEvent, XTST_LIBS=-lXtst,[
-       AC_MSG_ERROR([Couldn't find the Xtst library. Check config.log])],
-       -lX11 -lXext)
-AC_SUBST(XTST_LIBS)
-
-have_xkb=
-AC_CHECK_LIB(X11, XkbQueryExtension, have_xkb="maybe")
-if test "x$have_xkb" = "xmaybe"; then 
-       AC_CHECK_HEADER(X11/XKBlib.h, have_xkb=yes)
-fi
-if test "x$have_xkb" = "xyes"; then
-       AC_MSG_RESULT(yes)
-       AC_DEFINE([HAVE_XKB], [], Xkb is present)
-fi
-
-have_xinput=
-AC_CHECK_LIB(Xi, XOpenDevice, XINPUT_LIBS=-lXi,,-lXext)
-if test "x$XINPUT_LIBS" = x; then
-       AC_MSG_ERROR(Couldn't find the XInput library. Check config.log for details)
-fi                            
-AC_CHECK_HEADER(X11/extensions/XInput.h, have_xinput=yes)
-AC_SUBST(XINPUT_LIBS)
-
-AC_ARG_ENABLE(xevie, [--enable-xevie  Build with XEViE support [default=yes]], enable_xevie="$enableval", enable_xevie=yes)
-
-if test x$enable_xevie = xyes ; then
-       have_xevie=
-       AC_CHECK_LIB(Xext, XevieStart, have_xevie="yes")
-
-       if test "x$have_xevie" = "xyes"; then
-               XEVIE_LIBS="-lXext"
-               AC_DEFINE([HAVE_XEVIE], [], Xevie is present)
-       else
-          AC_CHECK_LIB(Xevie, XevieQueryVersion, have_xevie="maybe",,-lXevie -lXext)
-          if test "x$have_xevie" = "xmaybe"; then
-             AC_CHECK_HEADER(X11/extensions/Xevie.h, have_xevie=yes, [], [#include <X11/Xlib.h>])
-             if test "x$have_xevie" = "xyes"; then
-                     XEVIE_LIBS="-lXext -lXevie"              
-                     AC_DEFINE([HAVE_XEVIE], [], Xevie is present)
-             fi
-          fi   
-       fi
-       AC_SUBST(XEVIE_LIBS)
-fi
-
 AC_ARG_VAR([DEFAULT_ATSPI_INTROSPECTION_PATH],
           [Set the default path for the install ofDBus introspection XML
            relative to the pkgdatadir.])
 AC_ARG_VAR([DEFAULT_ATSPI_INTROSPECTION_PATH],
           [Set the default path for the install ofDBus introspection XML
            relative to the pkgdatadir.])
@@ -153,45 +87,24 @@ if test -z "$GTK_MODULE_DIR"; then
          GTK_MODULE_DIR=gtk-2.0/modules
 fi
 
          GTK_MODULE_DIR=gtk-2.0/modules
 fi
 
-dnl find sizes & alignments
-orig_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS"
-DBIND_CHECK_ALIGNOF(char)
-DBIND_CHECK_ALIGNOF(dbus_bool_t)
-DBIND_CHECK_ALIGNOF(dbus_int16_t)
-DBIND_CHECK_ALIGNOF(dbus_int32_t)
-DBIND_CHECK_ALIGNOF(dbus_int64_t)
-DBIND_CHECK_ALIGNOF(double)
-DBIND_CHECK_ALIGNOF(dbind_pointer)
-DBIND_CHECK_ALIGNOF(dbind_struct)
-CPPFLAGS=$orig_CPPFLAGS 
-
 #libtool option to strip symbols starting with cspi
 #libtool option to strip symbols starting with cspi
-#
 LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^cspi]].*"'
 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
 
 AC_CONFIG_FILES([Makefile
 LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^cspi]].*"'
 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
 
 AC_CONFIG_FILES([Makefile
-                libloginhelper-1.0.pc
-                cspi-1.0.pc
-                cspi-1.0-uninstalled.pc
-                xml/Makefile
+                pkgconfig/cspi-1.0.pc
+                pkgconfig/cspi-1.0-uninstalled.pc
                 tests/Makefile
                 tests/Makefile
-                tools/Makefile
-                droute/Makefile
-                spi-common/Makefile
-                registryd/Makefile
+                common/Makefile
                 atk-adaptor/Makefile
                 atk-adaptor/Makefile
-                login-helper/Makefile
                 tests/dummyatk/Makefile
                 tests/data/Makefile
                 tests/pyatspi/Makefile
                 tests/pyatspi/pasytest/Makefile
                 tests/apps/Makefile
                 tests/cspi/Makefile
                 tests/dummyatk/Makefile
                 tests/data/Makefile
                 tests/pyatspi/Makefile
                 tests/pyatspi/pasytest/Makefile
                 tests/apps/Makefile
                 tests/cspi/Makefile
-                dbind/Makefile
                 cspi/Makefile
                 pyatspi/Makefile
                 cspi/Makefile
                 pyatspi/Makefile
-                dbind-config.h])
+               ])
 
 AC_OUTPUT
 
 AC_OUTPUT
index 1cb9033..6d76a36 100644 (file)
@@ -2,10 +2,14 @@ lib_LTLIBRARIES = libcspi.la
 
 libcspi_la_LDFLAGS = @LDFLAGS@ @LT_VERSION_INFO@ @LIBTOOL_EXPORT_OPTIONS@ -no-undefined
 
 
 libcspi_la_LDFLAGS = @LDFLAGS@ @LT_VERSION_INFO@ @LIBTOOL_EXPORT_OPTIONS@ -no-undefined
 
-libcspi_la_CFLAGS = $(DBUS_GLIB_CFLAGS) $(ATK_CFLAGS) -I$(top_srcdir)
+libcspi_la_CFLAGS = $(DBUS_GLIB_CFLAGS) \
+                    $(ATK_CFLAGS)       \
+                   $(DBIND_CFLAGS)     \
+                   $(DROUTE_CFLAGS)    \
+                    -I$(top_srcdir)
 
 
-LDADD = $(DBUS_GLIB_LIBS)                      \
-                     $(top_builddir)/spi-common/libspicommon.la
+LDADD = $(DBUS_GLIB_LIBS)              \
+        $(top_builddir)/common/libspicommon.la
 
 libcspidir = $(includedir)/at-spi-1.0/cspi
 libcspi_HEADERS =              \
 
 libcspidir = $(includedir)/at-spi-1.0/cspi
 libcspi_HEADERS =              \
@@ -36,7 +40,8 @@ libcspi_la_SOURCES =          \
        spi-value.c \
        spi-private.h
 
        spi-value.c \
        spi-private.h
 
-libcspi_la_LIBADD =            \
-       $(top_builddir)/spi-common/libspicommon.la \
-                     $(top_builddir)/dbind/libdbind.la\
-       $(LIBCSPI_LIBS) $(X_LIBS)
+libcspi_la_LIBADD =                    \
+       $(top_builddir)/common/libspicommon.la \
+       $(LIBCSPI_LIBS)                 \
+        $(DBIND_LIBS)                  \
+        $(X_LIBS)
index 345be4f..7908dea 100644 (file)
@@ -22,7 +22,7 @@
  */
 
 #include <stdlib.h> /* for malloc */
  */
 
 #include <stdlib.h> /* for malloc */
-#include "spi-common/spi-stateset.h"
+#include "common/spi-stateset.h"
 #include <cspi/spi-private.h>
 
 static const char *role_names [] =
 #include <cspi/spi-private.h>
 
 static const char *role_names [] =
index 862a646..19846c4 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <cspi/spi-impl.h>
 #include <glib-object.h>
 
 #include <cspi/spi-impl.h>
 #include <glib-object.h>
-#include "spi-common/spi-types.h"
+#include "common/spi-types.h"
 
 #ifdef  __cplusplus
 extern "C" {
 
 #ifdef  __cplusplus
 extern "C" {
index c7197cb..795d08d 100644 (file)
 
 /* Private internal implementation details of at-spi. */
 
 
 /* Private internal implementation details of at-spi. */
 
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 #include "cspi/spi.h"
 #include "string.h"
 #include "cspi/cspi-lowlevel.h"
 #include "cspi/spi-listener.h"
 #include "dbind/dbind.h"
 #include <glib-object.h>
 #include "cspi/spi.h"
 #include "string.h"
 #include "cspi/cspi-lowlevel.h"
 #include "cspi/spi-listener.h"
 #include "dbind/dbind.h"
 #include <glib-object.h>
-#include "spi-common/spi-stateset.h"
+#include "common/spi-stateset.h"
 
 typedef struct _CSpiApplication CSpiApplication;
 struct _CSpiApplication
 
 typedef struct _CSpiApplication CSpiApplication;
 struct _CSpiApplication
index 4441e95..9d25828 100644 (file)
@@ -25,7 +25,7 @@
 #define _SPI_H
 
 #include <glib.h>
 #define _SPI_H
 
 #include <glib.h>
-#include <spi-common/spi-types.h>
+#include <common/spi-types.h>
 #include <cspi/spi-impl.h>
 /*
  * Definitions for AccessibleRole, AccessibleState,
 #include <cspi/spi-impl.h>
 /*
  * Definitions for AccessibleRole, AccessibleState,
@@ -39,7 +39,7 @@
 /*
  * Auxiliary typedefs and mask definitions
  */
 /*
  * Auxiliary typedefs and mask definitions
  */
-#include <spi-common/keymasks.h>
+#include <common/keymasks.h>
 
 #ifdef  __cplusplus
 extern "C" {
 
 #ifdef  __cplusplus
 extern "C" {
diff --git a/dbind-config.h.in b/dbind-config.h.in
deleted file mode 100644 (file)
index 3da421e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#define DBIND_ALIGNOF_CHAR          @DBIND_ALIGNOF_CHAR@
-#define DBIND_ALIGNOF_DBIND_POINTER @DBIND_ALIGNOF_DBIND_POINTER@
-#define DBIND_ALIGNOF_DBIND_STRUCT  @DBIND_ALIGNOF_DBIND_STRUCT@
-#define DBIND_ALIGNOF_DBUS_BOOL_T   @DBIND_ALIGNOF_DBUS_BOOL_T@
-#define DBIND_ALIGNOF_DBUS_INT16_T  @DBIND_ALIGNOF_DBUS_INT16_T@
-#define DBIND_ALIGNOF_DBUS_INT32_T  @DBIND_ALIGNOF_DBUS_INT32_T@
-#define DBIND_ALIGNOF_DBUS_INT64_T  @DBIND_ALIGNOF_DBUS_INT64_T@
-#define DBIND_ALIGNOF_DOUBLE        @DBIND_ALIGNOF_DOUBLE@
diff --git a/dbind/Makefile.am b/dbind/Makefile.am
deleted file mode 100644 (file)
index cc2849e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-lib_LTLIBRARIES = libdbind.la
-
-AM_CPPFLAGS = \
-       -DG_LOG_DOMAIN=\"dbind\" \
-       -I$(top_srcdir) \
-       $(WARN_CFLAGS) \
-       $(DBUS_CFLAGS) \
-       $(GLIB_CFLAGS)
-
-libdbindinclude_HEADERS = \
-       dbind-any.h \
-       dbind.h
-libdbindincludedir=$(includedir)/dbind-0.1
-
-libdbind_la_SOURCES = \
-       dbind.c \
-       dbind-any.c
-libdbind_la_LIBADD = $(DBUS_LIBS) $(GLIB_LIBS)
-
-TESTS = dbtest
-
-check_PROGRAMS = dbtest
-dbtest_SOURCES = dbtest.c
-dbtest_LDFLAGS = libdbind.la
diff --git a/dbind/dbind-any.c b/dbind/dbind-any.c
deleted file mode 100644 (file)
index 0d0ecf9..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-/* type driven marshalling */
-#include <stdio.h>
-#include <glib.h>
-
-#include "config.h"
-#include "dbind-config.h"
-#include "dbind-any.h"
-
-#undef DEBUG
-
-/*  Align a value upward to a boundary, expressed as a number of bytes.
- *  E.g. align to an 8-byte boundary with argument of 8.
- *
- *   (this + boundary - 1)
- *          &
- *    ~(boundary - 1)
- */
-#define ALIGN_VALUE(this, boundary) \
-  (( ((gulong)(this)) + (((gulong)(boundary)) -1)) & (~(((gulong)(boundary))-1)))
-
-#define ALIGN_ADDRESS(this, boundary) \
-  ((gpointer)ALIGN_VALUE(this, boundary))
-
-#define PTR_PLUS(ptr, offset) \
-        ((gpointer) (((guchar *)(ptr)) + (offset)))
-
-#define DBIND_POD_CASES \
-         DBUS_TYPE_BYTE: \
-    case DBUS_TYPE_INT16: \
-    case DBUS_TYPE_UINT16: \
-    case DBUS_TYPE_INT32: \
-    case DBUS_TYPE_UINT32: \
-    case DBUS_TYPE_BOOLEAN: \
-    case DBUS_TYPE_INT64: \
-    case DBUS_TYPE_UINT64: \
-    case DBUS_TYPE_DOUBLE
-
-/*---------------------------------------------------------------------------*/
-
-static void
-warn_braces ()
-{
-    fprintf (stderr, "Error: dbus flags structures & dicts with braces rather than "
-             " an explicit type member of 'struct'\n");
-}
-
-/*---------------------------------------------------------------------------*/
-
-static unsigned int
-dbind_find_c_alignment_r (char **type)
-{
-    unsigned int retval = 1;
-
-    char t = **type;
-    (*type)++;
-
-#ifdef DEBUG
-    fprintf (stderr, "\tfind align for %c (0x%x)\n", t, t);
-#endif
-
-        switch (t) {
-    case DBUS_TYPE_BYTE:
-        return DBIND_ALIGNOF_CHAR;
-    case DBUS_TYPE_BOOLEAN:
-        return DBIND_ALIGNOF_DBUS_BOOL_T;
-    case DBUS_TYPE_INT16:
-    case DBUS_TYPE_UINT16:
-        return DBIND_ALIGNOF_DBUS_INT16_T;
-    case DBUS_TYPE_INT32:
-    case DBUS_TYPE_UINT32:
-        return DBIND_ALIGNOF_DBUS_INT32_T;
-    case DBUS_TYPE_INT64:
-    case DBUS_TYPE_UINT64:
-        return DBIND_ALIGNOF_DBUS_INT64_T;
-    case DBUS_TYPE_DOUBLE:
-        return DBIND_ALIGNOF_DOUBLE;
-    /* ptr types */
-    case DBUS_TYPE_STRING:
-    case DBUS_TYPE_OBJECT_PATH:
-    case DBUS_TYPE_SIGNATURE:
-    case DBUS_TYPE_ARRAY:
-        return DBIND_ALIGNOF_DBIND_POINTER;
-    case DBUS_STRUCT_BEGIN_CHAR:
-#if DBIND_ALIGNOF_DBIND_STRUCT > 1
-                retval = MAX (retval, DBIND_ALIGNOF_DBIND_STRUCT);
-#endif
-        while (**type != DBUS_STRUCT_END_CHAR) {
-            int elem_align = dbind_find_c_alignment_r (type);
-                        retval = MAX (retval, elem_align);
-        }
-        (*type)++;
-        return retval;
-    case DBUS_TYPE_STRUCT:
-    case DBUS_TYPE_DICT_ENTRY:
-        warn_braces ();
-        return DBIND_ALIGNOF_DBIND_POINTER;
-    case '\0':
-        g_assert_not_reached();
-        break;
-    default:
-                return 1;
-  }
-}
-
-/*---------------------------------------------------------------------------*/
-
-/* gather immediate allocation information for this type */
-static size_t
-dbind_gather_alloc_info_r (char **type)
-{
-  char t = **type;
-  (*type)++;
-  if (t == DBUS_TYPE_ARRAY)
-    {
-      switch (**type)
-        {
-          case DBUS_STRUCT_BEGIN_CHAR:
-              while (**type != DBUS_STRUCT_END_CHAR && **type != '\0') (*type)++;
-              if (**type != '\0') (*type)++;
-              break;
-          case '\0':
-              break;
-          default:
-              (*type)++;
-              break;
-        }
-    }
-
-  switch (t) {
-    case DBUS_TYPE_BYTE:
-        return sizeof (char);
-    case DBUS_TYPE_BOOLEAN:
-        return sizeof (dbus_bool_t);
-    case DBUS_TYPE_INT16:
-    case DBUS_TYPE_UINT16:
-        return sizeof (dbus_int16_t);
-    case DBUS_TYPE_INT32:
-    case DBUS_TYPE_UINT32:
-        return sizeof (dbus_int32_t);
-    case DBUS_TYPE_INT64:
-    case DBUS_TYPE_UINT64:
-        return sizeof (dbus_int64_t);
-    case DBUS_TYPE_DOUBLE:
-        return sizeof (double);
-    /* ptr types */
-    case DBUS_TYPE_STRING:
-    case DBUS_TYPE_OBJECT_PATH:
-    case DBUS_TYPE_SIGNATURE:
-    case DBUS_TYPE_ARRAY:
-        return sizeof (void *);
-    case DBUS_STRUCT_BEGIN_CHAR: {
-                int sum = 0, stralign;
-
-        stralign = dbind_find_c_alignment (*type - 1);
-
-        while (**type != DBUS_STRUCT_END_CHAR) {
-                        sum = ALIGN_VALUE (sum, dbind_find_c_alignment (*type));
-                        sum += dbind_gather_alloc_info_r (type);
-        }
-                sum = ALIGN_VALUE (sum, stralign);
-
-        g_assert (**type == DBUS_STRUCT_END_CHAR);
-        (*type)++;
-
-                return sum;
-    }
-    case DBUS_TYPE_STRUCT:
-    case DBUS_TYPE_DICT_ENTRY:
-        warn_braces ();
-    default:
-        return 0;
-  }
-}
-
-static size_t
-dbind_gather_alloc_info (char *type)
-{
-  return dbind_gather_alloc_info_r (&type);
-}
-
-/*---------------------------------------------------------------------------*/
-
-static void
-dbind_any_free_r (char **type, void **data)
-{
-#ifdef DEBUG
-    fprintf (stderr, "any free '%c' to %p\n", **type, *data);
-#endif
-
-    switch (**type) {
-    case DBIND_POD_CASES:
-        *data = ((guchar *)*data) + dbind_gather_alloc_info (*type);
-        (*type)++;
-        break;
-    case DBUS_TYPE_STRING:
-    case DBUS_TYPE_OBJECT_PATH:
-    case DBUS_TYPE_SIGNATURE:
-#ifdef DEBUG
-        fprintf (stderr, "string free %p\n", **(void ***)data);
-#endif
-        g_free (**(void ***)data);
-        *data = ((guchar *)*data) + dbind_gather_alloc_info (*type);
-        (*type)++;
-        break;
-    case DBUS_TYPE_ARRAY: {
-        int i;
-        GArray *vals = **(void ***)data;
-        size_t elem_size, elem_align;
-        char *saved_child_type;
-
-        (*type)++;
-        saved_child_type = *type;
-
-        elem_size = dbind_gather_alloc_info (*type);
-        elem_align = dbind_find_c_alignment_r (type); 
-
-        for (i = 0; i < vals->len; i++) {
-            void *ptr = vals->data + elem_size * i;
-            *type = saved_child_type; /* rewind type info */
-            ptr = ALIGN_ADDRESS (ptr, elem_align);
-            dbind_any_free_r (type, &ptr);
-        }
-        g_array_free (vals, TRUE);
-        break;
-    }
-    case DBUS_STRUCT_BEGIN_CHAR: {
-                gconstpointer data0 = *data;
-                int offset = 0, stralign;
-
-        stralign = dbind_find_c_alignment (*type);
-        (*type)++;
-
-        offset = 0 ;
-        while (**type != DBUS_STRUCT_END_CHAR) {
-            char *subt = *type;
-                        offset = ALIGN_VALUE (offset, dbind_find_c_alignment (*type));
-                        *data = PTR_PLUS (data0, offset);
-            dbind_any_free_r (type, data);
-            offset += dbind_gather_alloc_info (subt);
-        }
-
-                offset = ALIGN_VALUE (offset, stralign);
-                *data = PTR_PLUS (data0, offset);
-
-        g_assert (**type == DBUS_STRUCT_END_CHAR);
-        (*type)++;
-
-        break;
-    }
-    case DBUS_TYPE_STRUCT:
-    case DBUS_TYPE_DICT_ENTRY:
-        warn_braces ();
-        break;
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-
-void
-dbind_any_marshal (DBusMessageIter *iter,
-                   char           **type,
-                   void           **data)
-{
-    size_t len;
-
-#ifdef DEBUG
-    fprintf (stderr, "any marshal '%c' to %p\n", **type, *data);
-#endif
-
-    switch (**type) {
-    case DBIND_POD_CASES:
-    case DBUS_TYPE_STRING:
-    case DBUS_TYPE_OBJECT_PATH:
-    case DBUS_TYPE_SIGNATURE:
-        len = dbind_gather_alloc_info (*type);
-        dbus_message_iter_append_basic (iter, **type, *data);
-        *data = ((guchar *)*data) + len;
-        (*type)++;
-        break;
-    case DBUS_TYPE_ARRAY: {
-        int i;
-        GArray *vals = **(void ***)data;
-        size_t elem_size, elem_align;
-        DBusMessageIter sub;
-        char *saved_child_type, *child_type_string;
-
-        (*type)++;
-        saved_child_type = *type;
-
-        elem_size = dbind_gather_alloc_info (*type);
-        elem_align = dbind_find_c_alignment_r (type); 
-
-        /* wow this part of the API sucks too ... */
-        child_type_string = g_strndup (saved_child_type, *type - saved_child_type);
-        /* fprintf (stderr, "array child type '%s'\n", child_type_string); */
-        dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY,
-                                          child_type_string, &sub);
-        for (i = 0; i < vals->len; i++) {
-            void *ptr = vals->data + elem_size * i;
-            *type = saved_child_type; /* rewind type info */
-            ptr = ALIGN_ADDRESS (ptr, elem_align);
-            dbind_any_marshal (&sub, type, &ptr);
-        }
-
-        dbus_message_iter_close_container (iter, &sub);
-        g_free (child_type_string);
-        break;
-    }
-    case DBUS_STRUCT_BEGIN_CHAR: {
-                gconstpointer data0 = *data;
-                int offset = 0, stralign;
-        DBusMessageIter sub;
-
-        stralign = dbind_find_c_alignment (*type);
-
-        (*type)++;
-
-        dbus_message_iter_open_container (iter, DBUS_TYPE_STRUCT, NULL, &sub);
-
-        offset = 0 ;
-        while (**type != DBUS_STRUCT_END_CHAR) {
-            char *subt = *type;
-                        offset = ALIGN_VALUE (offset, dbind_find_c_alignment (*type));
-                        *data = PTR_PLUS (data0, offset);
-            dbind_any_marshal (&sub, type, data);
-            offset += dbind_gather_alloc_info (subt);
-        }
-
-                offset = ALIGN_VALUE (offset, stralign);
-                *data = PTR_PLUS (data0, offset);
-
-        dbus_message_iter_close_container (iter, &sub);
-
-        g_assert (**type == DBUS_STRUCT_END_CHAR);
-        (*type)++;
-
-        break;
-    }
-    case DBUS_TYPE_STRUCT:
-    case DBUS_TYPE_DICT_ENTRY:
-        warn_braces ();
-        break;
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-
-void
-dbind_any_marshal_va (DBusMessageIter *iter,
-                      char           **arg_types,
-                      va_list          args)
-{
-    char *p = *arg_types;
-    {
-        /* special case base-types since we need to walk the stack worse-luck */
-        for (;*p != '\0' && *p != '=';) {
-            int intarg;
-            void *ptrarg;
-            double doublearg;
-            dbus_int64_t int64arg;
-            void *arg = NULL;
-
-            switch (*p) {
-            case DBUS_TYPE_BYTE:
-            case DBUS_TYPE_BOOLEAN:
-            case DBUS_TYPE_INT16:
-            case DBUS_TYPE_UINT16:
-            case DBUS_TYPE_INT32:
-            case DBUS_TYPE_UINT32:
-                intarg = va_arg (args, int);
-                arg = &intarg;
-                break;
-            case DBUS_TYPE_INT64:
-            case DBUS_TYPE_UINT64:
-                int64arg = va_arg (args, dbus_int64_t);
-                arg = &int64arg;
-                break;
-            case DBUS_TYPE_DOUBLE:
-                doublearg = va_arg (args, double);
-                arg = &doublearg;
-                break;
-            /* ptr types */
-            case DBUS_TYPE_STRING:
-            case DBUS_TYPE_OBJECT_PATH:
-            case DBUS_TYPE_SIGNATURE:
-            case DBUS_TYPE_ARRAY:
-            case DBUS_TYPE_DICT_ENTRY:
-                ptrarg = va_arg (args, void *);
-                arg = &ptrarg;
-                break;
-            case DBUS_STRUCT_BEGIN_CHAR:
-                ptrarg = va_arg (args, void *);
-                arg = ptrarg;
-                break;
-
-            case DBUS_TYPE_VARIANT:
-                fprintf (stderr, "No variant support yet - very toolkit specific\n");
-                ptrarg = va_arg (args, void *);
-                arg = &ptrarg;
-                break;
-            default:
-                fprintf (stderr, "Unknown / invalid arg type %c\n", *p);
-                break;
-            }
-            if (arg != NULL)
-                dbind_any_marshal (iter, &p, &arg);
-            }
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-
-void
-dbind_any_demarshal (DBusMessageIter *iter,
-                     char           **type,
-                     void           **data)
-{
-    size_t len;
-
-#ifdef DEBUG
-    fprintf (stderr, "any demarshal '%c' to %p\n", **type, *data);
-#endif
-
-    switch (**type) {
-    case DBIND_POD_CASES:
-        len = dbind_gather_alloc_info (*type);
-        dbus_message_iter_get_basic (iter, *data);
-        *data = ((guchar *)*data) + len;
-        (*type)++;
-        break;
-    case DBUS_TYPE_STRING:
-    case DBUS_TYPE_OBJECT_PATH:
-    case DBUS_TYPE_SIGNATURE:
-        len = dbind_gather_alloc_info (*type);
-        dbus_message_iter_get_basic (iter, *data);
-#ifdef DEBUG
-        fprintf (stderr, "dup string '%s' (%p)\n", **(void ***)data, **(void ***)data);
-#endif
-        **(void ***)data = g_strdup (**(void ***)data);
-        *data = ((guchar *)*data) + len;
-        (*type)++;
-        break;
-    case DBUS_TYPE_ARRAY: {
-        GArray *vals;
-        DBusMessageIter child;
-        size_t elem_size, elem_align;
-        char *stored_child_type;
-        int i;
-
-        (*type)++;
-        stored_child_type = *type;
-
-        elem_size = dbind_gather_alloc_info (*type);
-        elem_align = dbind_find_c_alignment_r (type);
-        vals = g_array_new (FALSE, FALSE, elem_size);
-        (**(void ***)data) = vals;
-        *data = ((guchar *)*data) + sizeof (void *);
-
-        i = 0;
-        dbus_message_iter_recurse (iter, &child);
-        while (dbus_message_iter_get_arg_type (&child) != DBUS_TYPE_INVALID) {
-            void *ptr;
-            char *subt = stored_child_type;
-            g_array_set_size (vals, i + 1);
-            ptr = vals->data + elem_size * i;
-            ptr = ALIGN_ADDRESS (ptr, elem_align);
-            dbind_any_demarshal (&child, &subt, &ptr);
-            i++;
-        };
-        break;
-    }
-    case DBUS_STRUCT_BEGIN_CHAR: {
-                gconstpointer data0 = *data;
-                int offset = 0, stralign;
-        DBusMessageIter child;
-
-        stralign = dbind_find_c_alignment (*type);
-
-        (*type)++;
-
-        dbus_message_iter_recurse (iter, &child);
-
-        while (**type != DBUS_STRUCT_END_CHAR) {
-            char *subt = *type;
-                        offset = ALIGN_VALUE (offset, dbind_find_c_alignment (*type));
-                        *data = PTR_PLUS (data0, offset);
-            dbind_any_demarshal (&child, type, data);
-            offset += dbind_gather_alloc_info (subt);
-        }
-
-                offset = ALIGN_VALUE (offset, stralign);
-                *data = PTR_PLUS (data0, offset);
-
-        g_assert (**type == DBUS_STRUCT_END_CHAR);
-        (*type)++;
-
-        break;
-    }
-    case DBUS_TYPE_STRUCT:
-    case DBUS_TYPE_DICT_ENTRY:
-        warn_braces ();
-        break;
-    }
-    dbus_message_iter_next (iter);
-}
-
-/*---------------------------------------------------------------------------*/
-
-void
-dbind_any_demarshal_va (DBusMessageIter *iter,
-                        char           **arg_types,
-                        va_list          args)
-{
-    char *p = *arg_types;
-    for (;*p != '\0';) {
-        void *arg = va_arg (args, void *);
-        dbind_any_demarshal (iter, &p, &arg);
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-
-/* nice deep free ... */
-void
-dbind_any_free (char *type,
-                void *ptr)
-{
-    dbind_any_free_r (&type, &ptr);
-}
-
-/* should this be the default normalization ? */
-void
-dbind_any_free_ptr (char *type, void *ptr)
-{
-    dbind_any_free (type, &ptr);
-}
-
-/*---------------------------------------------------------------------------*/
-
-unsigned int
-dbind_find_c_alignment (char *type)
-{
-    return dbind_find_c_alignment_r (&type);
-}
-
-/*END------------------------------------------------------------------------*/
diff --git a/dbind/dbind-any.h b/dbind/dbind-any.h
deleted file mode 100644 (file)
index 975b244..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _DBIND_ANY_H_
-#define _DBIND_ANY_H_
-
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus.h>
-
-unsigned int dbind_find_c_alignment (char *type);
-
-void   dbind_any_marshal       (DBusMessageIter *iter,
-                                char           **type,
-                                void           **val);
-
-void   dbind_any_marshal_va    (DBusMessageIter *iter,
-                                char           **arg_types,
-                                va_list          args);
-
-void   dbind_any_demarshal     (DBusMessageIter *iter,
-                                char           **type,
-                                void           **val);
-
-void   dbind_any_demarshal_va  (DBusMessageIter *iter,
-                                char           **arg_types,
-                                va_list          args);
-
-void   dbind_any_free          (char            *type,
-                                void            *ptr_to_ptr);
-
-void   dbind_any_free_ptr      (char            *type,
-                                void            *ptr);
-
-#endif /* _DBIND_ANY_H_ */
diff --git a/dbind/dbind.c b/dbind/dbind.c
deleted file mode 100644 (file)
index 512133d..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <glib.h>
-
-#include "config.h"
-#include "dbind/dbind.h"
-
-/*
- * FIXME: compare types - to ensure they match &
- *        do dynamic padding of structures etc.
- */
-
-/*---------------------------------------------------------------------------*/
-
-static void
-set_reply (DBusPendingCall *pending, void *user_data)
-{
-    void **replyptr = (void **)user_data;
-
-    *replyptr = dbus_pending_call_steal_reply (pending);
-}
-
-static DBusMessage *
-send_and_allow_reentry (DBusConnection *bus, DBusMessage *message, DBusError *error)
-{
-    DBusPendingCall *pending;
-    DBusMessage *reply = NULL;
-
-    if (!dbus_connection_send_with_reply (bus, message, &pending, -1))
-    {
-        return NULL;
-    }
-    dbus_pending_call_set_notify (pending, set_reply, (void *)&reply, NULL);
-    while (!reply)
-    {
-      if (!dbus_connection_read_write_dispatch (bus, -1)) return NULL;
-    }
-    return reply;
-}
-
-dbus_bool_t
-dbind_method_call_reentrant_va (DBusConnection *cnx,
-                                const char     *bus_name,
-                                const char     *path,
-                                const char     *interface,
-                                const char     *method,
-                                DBusError      *opt_error,
-                                const char     *arg_types,
-                                va_list         args)
-{
-    dbus_bool_t success = FALSE;
-    DBusMessage *msg = NULL, *reply = NULL;
-    DBusMessageIter iter;
-    DBusError *err, real_err;
-    const char *p;
-
-    if (opt_error)
-        err = opt_error;
-    else {
-        dbus_error_init (&real_err);
-        err = &real_err;
-    }
-
-    msg = dbus_message_new_method_call (bus_name, path, interface, method);
-    if (!msg)
-        goto out;
-
-    p = arg_types;
-    dbus_message_iter_init_append (msg, &iter);
-    dbind_any_marshal_va (&iter, &p, args);
-
-    reply = send_and_allow_reentry (cnx, msg, err);
-    if (!reply)
-        goto out;
-
-    if (dbus_message_get_type (reply) == DBUS_MESSAGE_TYPE_ERROR)
-    {
-      const char *name = dbus_message_get_error_name (reply);
-      dbus_set_error (err, name, g_strdup (""));
-      goto out;
-    }
-    /* demarshal */
-    if (p[0] == '=' && p[1] == '>')
-    {
-        DBusMessageIter iter;
-        p += 2;
-        dbus_message_iter_init (reply, &iter);
-        dbind_any_demarshal_va (&iter, &p, args);
-    }
-
-    success = TRUE;
-out:
-    if (msg)
-        dbus_message_unref (msg);
-
-    if (reply)
-        dbus_message_unref (reply);
-
-    if (err == &real_err)
-        dbus_error_free (err);
-
-    return success;
-}
-
-/**
- * dbind_method_call_reentrant:
- *
- * @cnx:       A D-Bus Connection used to make the method call.
- * @bus_name:  The D-Bus bus name of the program where the method call should
- *             be made.
- * @path:      The D-Bus object path that should handle the method.
- * @interface: The D-Bus interface used to scope the method name.
- * @method:    Method to be invoked.
- * @opt_error: D-Bus error.
- * @arg_types: Variable length arguments interleaving D-Bus argument types
- *             and pointers to argument data.
- *
- * Makes a D-Bus method call using the supplied location data, method name and
- * argument data.This function is re-entrant. It continuously reads from the D-Bus
- * bus and dispatches messages until a reply has been recieved.
- **/
-dbus_bool_t
-dbind_method_call_reentrant (DBusConnection *cnx,
-                             const char     *bus_name,
-                             const char     *path,
-                             const char     *interface,
-                             const char     *method,
-                             DBusError      *opt_error,
-                             const char     *arg_types,
-                             ...)
-{
-    dbus_bool_t success = FALSE;
-    va_list args;
-
-    va_start (args, arg_types);
-    success = dbind_method_call_reentrant_va (cnx,
-                                              bus_name,
-                                              path,
-                                              interface,
-                                              method,
-                                              opt_error,
-                                              arg_types,
-                                              args);
-    va_end (args);
-
-    return success;
-}
-
-/*---------------------------------------------------------------------------*/
-
-/**
- * dbind_emit_signal:
- *
- * @cnx:       A D-Bus Connection used to make the method call.
- * @path:      The D-Bus object path that this signal is emitted from.
- * @interface: The D-Bus interface used to scope the method name.
- * @signal:    Name of signal to emit.
- * @opt_error: D-Bus error.
- * @arg_types: Variable length arguments interleaving D-Bus argument types
- *             and pointers to argument data.
- *
- * Emits a D-Bus signal  using the supplied signal name and argument data.
- **/
-dbus_bool_t
-dbind_emit_signal (DBusConnection *cnx,
-                   const char     *path,
-                   const char     *interface,
-                   const char     *signal,
-                   DBusError      *opt_error,
-                   const char     *arg_types,
-                   ...)
-{
-    dbus_bool_t success = FALSE;
-    DBusMessage *msg = NULL;
-    DBusMessageIter iter;
-    DBusError *err, real_err;
-    char *p;
-    va_list args;
-
-    va_start (args, arg_types);
-
-    if (opt_error)
-        err = opt_error;
-    else {
-        dbus_error_init (&real_err);
-        err = &real_err;
-    }
-
-    msg = dbus_message_new_signal (path, interface, signal);
-    if (!msg)
-        goto out;
-
-    dbus_message_iter_init (msg, &iter);
-    dbind_any_marshal_va (&iter, &p, args);
-
-    if (!dbus_connection_send (cnx, msg, NULL))
-       goto out;
-
-    success = TRUE;
-out:
-    va_end (args);
-
-    if (msg)
-        dbus_message_unref (msg);
-
-    if (err == &real_err)
-        dbus_error_free (err);
-
-    return success;
-}
-
-/*END------------------------------------------------------------------------*/
diff --git a/dbind/dbind.h b/dbind/dbind.h
deleted file mode 100644 (file)
index c3e1d56..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef _DBIND_H_
-#define _DBIND_H_
-
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus.h>
-#include <dbind/dbind-any.h>
-
-dbus_bool_t
-dbind_method_call_reentrant_va (DBusConnection *cnx,
-                                const char     *bus_name,
-                                const char     *path,
-                                const char     *interface,
-                                const char     *method,
-                                DBusError      *opt_error,
-                                const char     *arg_types,
-                                va_list         args);
-
-dbus_bool_t
-dbind_method_call_reentrant (DBusConnection *cnx,
-                             const char     *bus_name,
-                             const char     *path,
-                             const char     *interface,
-                             const char     *method,
-                             DBusError      *opt_error,
-                             const char     *arg_types,
-                             ...);
-
-dbus_bool_t
-dbind_emit_signal (DBusConnection *cnx,
-                   const char     *path,
-                   const char     *interface,
-                   const char     *signal,
-                   DBusError      *opt_error,
-                   const char     *arg_types,
-                   ...);
-
-#endif /* _DBIND_H_ */
diff --git a/dbind/dbtest.c b/dbind/dbtest.c
deleted file mode 100644 (file)
index d00486a..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-#include <stdio.h>
-#include <glib.h>
-#include <string.h>
-#include <dbind/dbind.h>
-
-/* Wow! dbus is unpleasant to use */
-
-#define DESKICE_PATH      "/Novell/ICEDesktop/Daemon"
-#define DESKICE_NAMESPACE "Novell.ICEDesktop.Daemon"
-
-void marshal (DBusMessage *msg, char *type, void *ptr)
-{
-    DBusMessageIter iter;
-
-    dbus_message_iter_init_append (msg, &iter);
-    dbind_any_marshal (&iter, &type, &ptr);
-}
-
-void demarshal (DBusMessage *msg, char *type, void *ptr)
-{
-    DBusMessageIter iter;
-
-    if (!dbus_message_iter_init (msg, &iter))
-        fprintf (stderr, "no data in msg\n");
-    else
-        dbind_any_demarshal (&iter, &type, &ptr);
-}
-
-#if 0
-dbus_bool_t  dbus_message_marshal   (DBusMessage  *msg,
-                                     char        **marshalled_data_p,
-                                     int          *len_p);
-
-void dump_msg (DBusMessage *msg)
-{
-    char *data = NULL;
-    int   len, i, j;
-
-    dbus_message_marshal (msg, &data, &len);
-    for (i = 0; i < (len+15)/16; i++) {
-        fprintf (stderr, "%4.d | ", i * 16);
-        for (j = 0; j < 16; j++) {
-            unsigned char c = (i*16+j <= len) ? data[i*16+j] : 0;
-            fprintf (stderr, "0x%.2x ", c);
-        }
-        fprintf (stderr, " | ");
-        for (j = 0; j < 16; j++) {
-            char c = (i*16+j <= len) ? data[i*16+j] : '\0';
-            fprintf (stderr, "%c", g_ascii_isprint (c) ? c : '.');
-        }
-    }
-}
-#endif
-
-void test_simple ()
-{
-    dbus_int32_t v1, v2;
-    DBusMessage *msg;
-
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-    v1 = 42;
-    marshal (msg, "i", &v1);
-    demarshal (msg, "i", &v2);
-    g_assert (v2 == 42);
-    g_assert (v1 == v2);
-
-    dbind_any_free ("i", &v2); /* nop */
-    dbus_message_unref (msg);
-
-    fprintf (stderr, "simple ok\n");
-}
-
-void test_array ()
-{
-    GArray *a1, *a2;
-    DBusMessage *msg;
-
-    /* pod types */
-    a1 = g_array_new (FALSE, FALSE, sizeof (dbus_int32_t));
-    g_array_set_size (a1, 4);
-    g_array_index (a1, dbus_int32_t, 0) = 42;
-    g_array_index (a1, dbus_int32_t, 1) = 17;
-    g_array_index (a1, dbus_int32_t, 2) = 26;
-    g_array_index (a1, dbus_int32_t, 3) = 38;
-
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-    marshal (msg, "ai", &a1);
-    demarshal (msg, "ai", &a2);
-
-    g_assert (a2 != NULL);
-    g_assert (a2->len == 4);
-    g_assert (g_array_index (a2, dbus_int32_t, 0) == 42);
-    g_assert (g_array_index (a2, dbus_int32_t, 1) == 17);
-    g_assert (g_array_index (a2, dbus_int32_t, 2) == 26);
-    g_assert (g_array_index (a2, dbus_int32_t, 3) == 38);
-    g_array_free (a1, TRUE);
-
-    dbind_any_free ("ai", &a2);
-    dbus_message_unref (msg);
-
-    fprintf (stderr, "array ok\n");
-}
-
-/* this taught me that the struct type is a mis-nomer, 
-   it is generated by brackets */
-void test_struct_native ()
-{
-    DBusMessage *msg;
-    DBusMessageIter iter, arr, str;
-
-    /* manually create ar(ss) */
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-
-    dbus_message_iter_init_append (msg, &iter);
-
-    dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "(ss)", &arr);
-    {
-        char *foo;
-        dbus_message_iter_open_container (&arr, DBUS_TYPE_STRUCT, NULL, &str);
-
-        foo = "foo";
-        dbus_message_iter_append_basic (&str, DBUS_TYPE_STRING, &foo);
-        foo = "baa";
-        dbus_message_iter_append_basic (&str, DBUS_TYPE_STRING, &foo);
-        
-        dbus_message_iter_close_container (&arr, &str);
-    }
-    dbus_message_iter_close_container (&iter, &arr);
-
-    fprintf (stderr, "native struct marshalling ok\n");
-    
-    dbus_message_unref (msg);
-}
-
-
-void test_struct_simple ()
-{
-    typedef struct {
-        char *foo;
-        char *baa;
-        char *baz;
-    } FooBaa;
-    GArray *a1 = NULL, *a2 = NULL;
-    DBusMessage *msg;
-
-    a1 = g_array_new (FALSE, FALSE, sizeof (FooBaa));
-    g_array_set_size (a1, 2);
-    g_array_index (a1, FooBaa, 0).foo = "foo";
-    g_array_index (a1, FooBaa, 0).baa = "baa";
-    g_array_index (a1, FooBaa, 0).baz = "baz";
-    g_array_index (a1, FooBaa, 1).foo = "Foo";
-    g_array_index (a1, FooBaa, 1).baa = "baA";
-    g_array_index (a1, FooBaa, 1).baz = "BaZ";
-
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-    marshal (msg, "a(sss)", &a1);
-    demarshal (msg, "a(sss)", &a2);
-
-    g_assert (a2 != NULL);
-    g_assert (a2 != a1);
-    g_assert (a2->len == 2);
-    g_assert (!strcmp (g_array_index (a2, FooBaa, 0).foo, "foo"));
-    g_assert (!strcmp (g_array_index (a2, FooBaa, 0).baa, "baa"));
-    g_assert (!strcmp (g_array_index (a2, FooBaa, 0).baz, "baz"));
-    g_assert (!strcmp (g_array_index (a2, FooBaa, 1).foo, "Foo"));
-    g_assert (!strcmp (g_array_index (a2, FooBaa, 1).baa, "baA"));
-    g_assert (!strcmp (g_array_index (a2, FooBaa, 1).baz, "BaZ"));
-    
-    fprintf (stderr, "simple struct ok\n");
-
-    dbind_any_free ("a(sss)", &a2);
-    dbus_message_unref (msg);
-}
-
-void test_struct_complex ()
-{
-    typedef struct {
-        dbus_int32_t x, y;
-    } Point;
-    typedef struct {
-        unsigned char pad1;
-        double        val;
-        Point         tl, br;
-        char          pad2;
-        char         *name;
-    } Complex;
-#define TYPEOF_POINT \
-    DBUS_STRUCT_BEGIN_CHAR_AS_STRING \
-        DBUS_TYPE_INT32_AS_STRING \
-        DBUS_TYPE_INT32_AS_STRING \
-    DBUS_STRUCT_END_CHAR_AS_STRING
-#define TYPEOF_COMPLEX \
-    DBUS_STRUCT_BEGIN_CHAR_AS_STRING \
-        DBUS_TYPE_BYTE_AS_STRING \
-        DBUS_TYPE_DOUBLE_AS_STRING \
-        TYPEOF_POINT \
-        TYPEOF_POINT \
-        DBUS_TYPE_BYTE_AS_STRING \
-        DBUS_TYPE_STRING_AS_STRING \
-    DBUS_STRUCT_END_CHAR_AS_STRING
-
-
-    DBusMessage *msg;
-    Complex c1, c2;
-
-    memset (&c1, 0, sizeof (c1));
-    memset (&c2, 0, sizeof (c2));
-
-    c1.pad1 = 2;
-    c1.val = 0.1327569;
-    c1.tl.x = 1;
-    c1.tl.y = 17;
-    c1.br.x = 2587;
-    c1.br.y = -1;
-    c1.pad2 = 1;
-    c1.name = "stroustrup";
-
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-    marshal (msg, TYPEOF_COMPLEX, &c1);
-    demarshal (msg, TYPEOF_COMPLEX, &c2);
-
-    g_assert (c2.pad1 == 2);
-    g_assert (c2.val == c1.val);
-    g_assert (c2.val != 0);
-    g_assert (c2.tl.x == 1);
-    g_assert (c2.tl.y == 17);
-    g_assert (c2.br.x == 2587);
-    g_assert (c2.br.y == -1);
-    g_assert (c2.pad2 == 1);
-    g_assert (!strcmp (c1.name, "stroustrup"));
-    
-    fprintf (stderr, "complex struct ok\n");
-
-    dbind_any_free (TYPEOF_COMPLEX, &c2);
-    dbus_message_unref (msg);
-}
-
-void test_struct_with_array ()
-{
-    typedef struct {
-        GArray *vals;
-        unsigned char pad1;
-    } ArrayStruct;
-#define TYPEOF_ARRAYSTRUCT \
-        DBUS_TYPE_ARRAY_AS_STRING \
-    DBUS_STRUCT_BEGIN_CHAR_AS_STRING \
-        DBUS_TYPE_ARRAY_AS_STRING \
-        DBUS_TYPE_UINT32_AS_STRING \
-        DBUS_TYPE_BYTE_AS_STRING \
-    DBUS_STRUCT_END_CHAR_AS_STRING
-
-
-    DBusMessage *msg;
-    GArray *a1, *a2;
-    ArrayStruct *p, *q;
-
-
-    a1 = g_array_new (FALSE, FALSE, sizeof (ArrayStruct));
-    g_array_set_size (a1, 2);
-    p = &g_array_index (a1, ArrayStruct, 0);
-    p[0].vals = g_array_new (FALSE, FALSE, sizeof (dbus_uint32_t));
-    g_array_set_size (p[0].vals, 2);
-    g_array_index (p[0].vals, dbus_uint32_t, 0) = 1;
-    g_array_index (p[0].vals, dbus_uint32_t, 1) = 1000;
-    p[0].pad1 = 2;
-    p[1].vals = g_array_new (FALSE, FALSE, sizeof (dbus_uint32_t));
-    g_array_set_size (p[1].vals, 2);
-    g_array_index (p[1].vals, dbus_uint32_t, 0) = 1000000;
-    g_array_index (p[1].vals, dbus_uint32_t, 1) = 1000000000;
-    p[1].pad1 = 8;
-
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-    marshal (msg, TYPEOF_ARRAYSTRUCT, &a1);
-    demarshal (msg, TYPEOF_ARRAYSTRUCT, &a2);
-
-    q = &g_array_index (a2, ArrayStruct, 0);
-    g_assert (p[0].pad1 == 2);
-    g_assert (g_array_index (p[1].vals, dbus_uint32_t, 1) == 1000000000);
-    
-    fprintf (stderr, "struct with array ok\n");
-
-    dbind_any_free (TYPEOF_ARRAYSTRUCT, &a2);
-    dbus_message_unref (msg);
-    g_array_free (p[0].vals, TRUE);
-    g_array_free (p[1].vals, TRUE);
-}
-
-void test_twovals ()
-{
-    typedef struct {
-        dbus_int32_t v1;
-        dbus_int32_t v2;
-    } TwoVal;
-#define TYPEOF_TWOVAL \
-        DBUS_TYPE_INT32_AS_STRING \
-        DBUS_TYPE_INT32_AS_STRING \
-
-    DBusMessage *msg;
-    DBusMessageIter iter;
-    TwoVal i, o;
-    char *type_twoval = TYPEOF_TWOVAL;
-    char *type;
-    void *ptr;
-
-    msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
-    i.v1 = 42;
-  i.v2 = 1764;
-    dbus_message_iter_init_append (msg, &iter);
-    type = type_twoval;
-    ptr = &i;
-    dbind_any_marshal (&iter, &type, &ptr);
-    dbind_any_marshal (&iter, &type, &ptr);
-    dbus_message_iter_init (msg, &iter);
-    type = type_twoval;
-    ptr = &o;
-    dbind_any_demarshal (&iter, &type, &ptr);
-    dbind_any_demarshal (&iter, &type, &ptr);
-    g_assert (o.v1 == 42);
-    g_assert (o.v2 == 1764);
-    g_assert (i.v1 == o.v1);
-    g_assert (i.v2 == o.v2);
-
-    dbind_any_free ("ii", &o); /* nop */
-    dbus_message_unref (msg);
-
-    fprintf (stderr, "two-val ok\n");
-}
-
-void test_marshalling ()
-{
-    test_simple ();
-    test_array ();
-    test_struct_native ();
-    test_struct_simple ();
-    test_struct_complex ();
-    test_struct_with_array ();
-    test_twovals ();
-
-    fprintf (stderr, "Marshalling ok\n");
-}
-
-void test_teamspaces (DBusConnection *bus)
-{
-    GArray *spaces;
-    DBusError error;
-    int i;
-    typedef struct {
-        char *name;
-        char *id;
-        char *url;
-    } TeamSpace;
-
-    dbus_error_init (&error);
-    if (!dbind_method_call_reentrant (bus,
-                                      NULL,
-                                      DESKICE_PATH,
-                                      DESKICE_NAMESPACE,
-                                      "GetTeamList",
-                                      &error,
-                                      "=>a(sss)",
-                                      &spaces)) {
-        fprintf (stderr, "Error getting team spaces %s: %s\n",
-                 error.name, error.message);
-        dbus_error_free (&error);
-        return;
-    }
-
-    if (!spaces) {
-        fprintf (stderr, "no teamspaces\n");
-        return;
-    }
-    fprintf (stderr, "%d teamspace(s)\n", spaces->len);
-    for (i = 0; i < spaces->len; i++) {
-        TeamSpace *space = &g_array_index (spaces, TeamSpace, i);
-        fprintf (stderr, "\t%d: %s, %s, %s\n", i, space->name, space->id, space->url);
-    }
-
-    dbind_any_free_ptr ("a(sss)", spaces);
-}
-
-void test_helpers ()
-{
-    dbind_find_c_alignment ("(sss)");
-    dbind_find_c_alignment ("a(sss)");
-    dbind_find_c_alignment ("(s(s)yd(d)s)");
-    fprintf (stderr, "helpers passed\n");
-}
-
-int main (int argc, char **argv)
-{
-    DBusConnection *bus;
-    DBusError err;
-
-    dbus_error_init (&err);
-
-    bus = dbus_bus_get (DBUS_BUS_SESSION, &err);
-
-    test_helpers ();
-    test_marshalling ();
-    test_teamspaces (bus);
-
-    return 0;
-}
diff --git a/droute/Makefile.am b/droute/Makefile.am
deleted file mode 100644 (file)
index 8d7e957..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-noinst_LTLIBRARIES = libdroute.la
-
-libdroute_la_CFLAGS = $(DBUS_GLIB_CFLAGS) \
-                      -DATSPI_INTROSPECTION_PATH=\"$(pkgdatadir)/$(DEFAULT_ATSPI_INTROSPECTION_PATH)\"\
-                      -I$(top_builddir)\
-                      -I$(top_srcdir)
-
-libdrouteinclude_HEADERS = \
-               droute.h
-               droute-variant.h
-libdrouteincludedir=$(includedir)/droute
-
-libdroute_la_SOURCES =\
-               droute.c\
-               droute.h\
-               droute-variant.c\
-               droute-variant.h\
-               droute-pairhash.c\
-               droute-pairhash.h
-
-TESTS = droute-test
-
-check_PROGRAMS = droute-test
-droute_test_SOURCES  = droute-test.c
-droute_test_CFLAGS = $(DBUS_GLIB_CFLAGS) \
-                    -I$(top_builddir)\
-                    -I$(top_srcdir)\
-                    -DTEST_INTROSPECTION_DIRECTORY=\"$(top_srcdir)/droute\"
-
-droute_test_LDFLAGS  = $(top_builddir)/dbind/libdbind.la\
-                      libdroute.la\
-                      $(DBUS_GLIB_LIBS)
diff --git a/droute/droute-pairhash.c b/droute/droute-pairhash.c
deleted file mode 100644 (file)
index f3b8da2..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008 Codethink Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "droute-pairhash.h"
-
-/*---------------------------------------------------------------------------*/
-
-static guint
-str_hash (guint32 h, const char *p)
-{
-  for (p += 1; *p != '\0'; p++)
-      h = (h << 5) - h + *p;
-
-  return h;
-}
-
-/*---------------------------------------------------------------------------*/
-
-StrPair *
-str_pair_new (const gchar *one, const gchar *two)
-{
-    StrPair *pair;
-
-    pair = g_new (StrPair, 1);
-    pair->one = one;
-    pair->two = two;
-    return pair;
-}
-
-guint
-str_pair_hash (gconstpointer key)
-{
-    StrPair *pair = (StrPair *) key;
-    guint hash = 0;
-
-    /*g_return_val_if_fail (pair      != NULL, 0);
-      g_return_val_if_fail (pair->one != NULL, 0);
-      g_return_val_if_fail (pair->two != NULL, 0);
-    */
-
-    if (*(pair->two) != '\0')
-      {
-        hash = *(pair->two);
-        hash = str_hash (hash, ++(pair->two));
-        hash = str_hash (hash, pair->one);
-      }
-
-    return hash;
-}
-
-gboolean
-str_pair_equal (gconstpointer a, gconstpointer b)
-{
-    StrPair *ap = (StrPair *) a;
-    StrPair *bp = (StrPair *) b;
-
-    if (g_str_equal (ap->one, bp->one) &&
-        g_str_equal (ap->two, bp->two))
-      {
-        return TRUE;
-      }
-    else
-      {
-        return FALSE;
-      }
-}
-
-/*END------------------------------------------------------------------------*/
diff --git a/droute/droute-pairhash.h b/droute/droute-pairhash.h
deleted file mode 100644 (file)
index 1491c2d..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008 Codethink Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef _DROUTE_PAIRHASH_H
-#define _DROUTE_PAIRHASH_H
-
-#include <glib.h>
-
-typedef struct _StrPair StrPair;
-struct _StrPair
-{
-    const gchar *one;
-    const gchar *two;
-};
-
-StrPair *str_pair_new     (const gchar *one,
-                           const gchar *two);
-
-guint    str_pair_hash    (gconstpointer key);
-gboolean str_pair_equal   (gconstpointer a,
-                           gconstpointer b);
-
-#endif /* _DROUTE_PAIRHASH_H */
diff --git a/droute/droute-test.c b/droute/droute-test.c
deleted file mode 100644 (file)
index 8b3fb7c..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-#include <stdio.h>
-#include <glib.h>
-#include <string.h>
-#include <droute/droute.h>
-#include <dbind/dbind.h>
-
-#include "dbus/dbus-glib-lowlevel.h"
-
-#define TEST_OBJECT_PATH    "/test/object"
-#define TEST_INTERFACE_ONE  "test.interface.One"
-#define TEST_INTERFACE_TWO  "test.interface.Two"
-
-#define OBJECT_ONE "ObjectOne";
-#define OBJECT_TWO "ObjectTwo";
-
-#if !defined TEST_INTROSPECTION_DIRECTORY
-    #error "No introspection XML directory defined"
-#endif
-
-#define STRING_ONE "StringOne"
-#define STRING_TWO "StringTwo"
-
-#define INT_ONE 0
-#define INT_TWO 456
-
-#define NONE_REPLY_STRING "NoneMethod"
-
-typedef struct _AnObject
-{
-    gchar *astring;
-    guint *anint;
-} AnObject;
-
-static DBusConnection *bus;
-static GMainLoop      *main_loop;
-static gboolean       success = TRUE;
-
-static DBusMessage *
-impl_null (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    DBusMessage *reply;
-
-    reply = dbus_message_new_method_return (message);
-    return reply;
-}
-
-static DBusMessage *
-impl_getInt (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    AnObject    *object = (AnObject *) user_data;
-    DBusMessage *reply;
-    DBusError    error;
-
-    dbus_error_init (&error);
-
-    reply = dbus_message_new_method_return (message);
-    dbus_message_append_args (reply, DBUS_TYPE_INT32, &(object->anint), DBUS_TYPE_INVALID);
-    return reply;
-}
-
-static DBusMessage *
-impl_setInt (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    AnObject    *object = (AnObject *) user_data;
-    DBusMessage *reply;
-    DBusError    error;
-
-    dbus_error_init (&error);
-
-    dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &(object->anint), DBUS_TYPE_INVALID);
-
-    reply = dbus_message_new_method_return (message);
-    return reply;
-}
-
-static DBusMessage *
-impl_getString (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    AnObject    *object = (AnObject *) user_data;
-    DBusMessage *reply;
-    DBusError    error;
-
-    dbus_error_init (&error);
-
-    reply = dbus_message_new_method_return (message);
-    dbus_message_append_args (reply, DBUS_TYPE_STRING, &(object->astring), DBUS_TYPE_INVALID);
-    return reply;
-}
-
-static DBusMessage *
-impl_setString (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    AnObject    *object = (AnObject *) user_data;
-    DBusMessage *reply;
-    DBusError    error;
-
-    dbus_error_init (&error);
-
-    g_free (object->astring);
-    dbus_message_get_args (message, &error, DBUS_TYPE_STRING, &(object->astring), DBUS_TYPE_INVALID);
-
-    reply = dbus_message_new_method_return (message);
-    return reply;
-}
-
-static DBusMessage *
-impl_getInterfaceOne (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    DBusMessage *reply;
-    DBusError    error;
-    gchar       *itf = TEST_INTERFACE_ONE;
-
-    dbus_error_init (&error);
-
-    reply = dbus_message_new_method_return (message);
-    dbus_message_append_args (reply, DBUS_TYPE_STRING, &itf, DBUS_TYPE_INVALID);
-    return reply;
-}
-
-static DBusMessage *
-impl_getInterfaceTwo (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    DBusMessage *reply;
-    DBusError    error;
-    gchar       *itf = TEST_INTERFACE_TWO;
-
-    dbus_error_init (&error);
-
-    reply = dbus_message_new_method_return (message);
-    dbus_message_append_args (reply, DBUS_TYPE_STRING, &itf, DBUS_TYPE_INVALID);
-    return reply;
-}
-
-static DRouteMethod test_methods_one[] = {
-    {impl_null,            "null"},
-    {impl_getInt,          "getInt"},
-    {impl_setInt,          "setInt"},
-    {impl_getString,       "getString"},
-    {impl_setString,       "setString"},
-    {impl_getInterfaceOne, "getInterfaceOne"},
-    {NULL, NULL}
-};
-
-static DRouteMethod test_methods_two[] = {
-    {impl_null,            "null"},
-    {impl_getInt,          "getInt"},
-    {impl_setInt,          "setInt"},
-    {impl_getString,       "getString"},
-    {impl_setString,       "setString"},
-    {impl_getInterfaceTwo, "getInterfaceTwo"},
-    {NULL, NULL}
-};
-
-static DRouteProperty test_properties[] = {
-    {NULL, NULL, NULL}
-};
-
-gboolean
-do_tests_func (gpointer data)
-{
-    DBusError    error;
-    const gchar *bus_name;
-
-    gchar     *expected_string;
-    gchar     *result_string;
-
-    dbus_error_init (&error);
-    bus_name = dbus_bus_get_unique_name (bus);
-
-    /* --------------------------------------------------------*/
-
-    dbind_method_call_reentrant (bus,
-                                 bus_name,
-                                 TEST_OBJECT_PATH,
-                                 TEST_INTERFACE_ONE,
-                                 "null",
-                                 NULL,
-                                 "");
-
-    /* --------------------------------------------------------*/
-
-    expected_string = TEST_INTERFACE_ONE;
-    result_string = NULL;
-    dbind_method_call_reentrant (bus,
-                                 bus_name,
-                                 TEST_OBJECT_PATH,
-                                 TEST_INTERFACE_ONE,
-                                 "getInterfaceOne",
-                                 NULL,
-                                 "=>s",
-                                 &result_string);
-    if (g_strcmp0(expected_string, result_string))
-    {
-            g_print ("Failed: reply to getInterfaceOne not as expected\n");
-            goto out;
-    }
-
-    /* --------------------------------------------------------*/
-
-out:
-    g_main_loop_quit (main_loop);
-    return FALSE;
-}
-
-
-int main (int argc, char **argv)
-{
-    DRouteContext  *cnx;
-    DRoutePath     *path;
-    AnObject       *object;
-    DBusError       error;
-
-    /* Setup some server object */
-
-    object = g_new0(AnObject, 1);
-    object->astring = g_strdup (STRING_ONE);
-    object->anint = INT_ONE;
-
-    dbus_error_init (&error);
-    main_loop = g_main_loop_new(NULL, FALSE);
-    bus = dbus_bus_get (DBUS_BUS_SESSION, &error);
-    dbus_connection_setup_with_g_main(bus, g_main_context_default());
-
-    cnx = droute_new (bus, TEST_INTROSPECTION_DIRECTORY);
-    path = droute_add_one (cnx, TEST_OBJECT_PATH, object);
-
-    droute_path_add_interface (path,
-                               TEST_INTERFACE_ONE,
-                               test_methods_one,
-                               test_properties);
-
-    droute_path_add_interface (path,
-                               TEST_INTERFACE_TWO,
-                               test_methods_two,
-                               test_properties);
-
-    g_idle_add (do_tests_func, NULL);
-    g_main_run(main_loop);
-    if (success)
-            return 0;
-    else
-            return 1;
-}
diff --git a/droute/droute-variant.c b/droute/droute-variant.c
deleted file mode 100644 (file)
index d4b5ca6..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "droute-variant.h"
-
-/*---------------------------------------------------------------------------*/
-
-dbus_bool_t
-droute_return_v_int32 (DBusMessageIter *iter, dbus_int32_t val)
-{
-    DBusMessageIter sub;
-
-    if (!dbus_message_iter_open_container
-        (iter, DBUS_TYPE_VARIANT, DBUS_TYPE_INT32_AS_STRING, &sub))
-      {
-        return FALSE;
-      }
-    dbus_message_iter_append_basic (&sub, DBUS_TYPE_INT32, &val);
-    dbus_message_iter_close_container (iter, &sub);
-    return TRUE;
-}
-
-dbus_bool_t
-droute_return_v_double (DBusMessageIter *iter, double val)
-{
-    DBusMessageIter sub;
-
-    if (!dbus_message_iter_open_container
-        (iter, DBUS_TYPE_VARIANT, DBUS_TYPE_DOUBLE_AS_STRING, &sub))
-      {
-        return FALSE;
-      }
-    dbus_message_iter_append_basic (&sub, DBUS_TYPE_DOUBLE, &val);
-    dbus_message_iter_close_container (iter, &sub);
-    return TRUE;
-}
-
-dbus_bool_t
-droute_return_v_string (DBusMessageIter *iter, const char *val)
-{
-    DBusMessageIter sub;
-
-    if (!val)
-      val = "";
-    if (!dbus_message_iter_open_container
-        (iter, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &sub))
-      {
-        return FALSE;
-      }
-    dbus_message_iter_append_basic (&sub, DBUS_TYPE_STRING, &val);
-    dbus_message_iter_close_container (iter, &sub);
-    return TRUE;
-}
-
-dbus_bool_t
-droute_return_v_object (DBusMessageIter *iter, const char *path)
-{
-    DBusMessageIter sub;
-
-    if (!dbus_message_iter_open_container
-        (iter, DBUS_TYPE_VARIANT, DBUS_TYPE_OBJECT_PATH_AS_STRING, &sub))
-      {
-        return FALSE;
-      }
-    dbus_message_iter_append_basic (&sub, DBUS_TYPE_OBJECT_PATH, &path);
-    dbus_message_iter_close_container (iter, &sub);
-    return TRUE;
-}
-
-/*---------------------------------------------------------------------------*/
-
-dbus_int32_t
-droute_get_v_int32 (DBusMessageIter *iter)
-{
-    DBusMessageIter sub;
-    dbus_int32_t rv;
-
-    // TODO- ensure we have the correct type
-    dbus_message_iter_recurse (iter, &sub);
-    dbus_message_iter_get_basic (&sub, &rv);
-    return rv;
-}
-
-const char *
-droute_get_v_string (DBusMessageIter *iter)
-{
-    DBusMessageIter sub;
-    char *rv;
-
-    // TODO- ensure we have the correct type
-    dbus_message_iter_recurse (iter, &sub);
-    dbus_message_iter_get_basic (&sub, &rv);
-    return rv;
-}
-
-/*END------------------------------------------------------------------------*/
diff --git a/droute/droute-variant.h b/droute/droute-variant.h
deleted file mode 100644 (file)
index 47feb96..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef _DROUTE_VARIANT_H
-#define _DROUTE_VARIANT_H
-
-#include <dbus/dbus.h>
-
-dbus_bool_t  droute_return_v_int32  (DBusMessageIter *iter, dbus_int32_t val);
-dbus_bool_t  droute_return_v_double (DBusMessageIter *iter, double val);
-dbus_bool_t  droute_return_v_string (DBusMessageIter *iter, const char *val);
-dbus_bool_t  droute_return_v_object (DBusMessageIter *iter, const char *path);
-
-dbus_int32_t droute_get_v_int32     (DBusMessageIter *iter);
-const char  *droute_get_v_string    (DBusMessageIter *iter);
-
-#endif /* _DROUTE_VARIANT_H */
diff --git a/droute/droute.c b/droute/droute.c
deleted file mode 100644 (file)
index 212c280..0000000
+++ /dev/null
@@ -1,593 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008 Novell, Inc.
- * Copyright 2008 Codethink Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "droute.h"
-#include "droute-pairhash.h"
-
-#define CHUNKS_DEFAULT (512)
-
-#define oom() g_error ("D-Bus out of memory, this message will fail anyway")
-
-#if defined DROUTE_DEBUG
-    #define _DROUTE_DEBUG(format, args...) g_print (format , ## args)
-#else
-    #define _DROUTE_DEBUG(format, args...)
-#endif
-
-struct _DRouteContext
-{
-    DBusConnection       *bus;
-    GPtrArray            *registered_paths;
-
-    gchar                *introspect_dir;
-};
-
-struct _DRoutePath
-{
-    DRouteContext        *cnx;
-    GStringChunk         *chunks;
-    GPtrArray            *interfaces;
-    GHashTable           *methods;
-    GHashTable           *properties;
-
-    void                   *user_data;
-    DRouteGetDatumFunction  get_datum;
-};
-
-/*---------------------------------------------------------------------------*/
-
-typedef struct PropertyPair
-{
-    DRoutePropertyFunction get;
-    DRoutePropertyFunction set;
-} PropertyPair;
-
-/*---------------------------------------------------------------------------*/
-
-static DBusHandlerResult
-handle_message (DBusConnection *bus, DBusMessage *message, void *user_data);
-
-/*---------------------------------------------------------------------------*/
-
-static DRoutePath *
-path_new (DRouteContext *cnx,
-          void    *user_data,
-          DRouteGetDatumFunction get_datum)
-{
-    DRoutePath *new_path;
-
-    new_path = g_new0 (DRoutePath, 1);
-    new_path->cnx = cnx;
-    new_path->chunks = g_string_chunk_new (CHUNKS_DEFAULT);
-    new_path->interfaces = g_ptr_array_new ();
-
-    new_path->methods = g_hash_table_new_full ((GHashFunc)str_pair_hash,
-                                               str_pair_equal,
-                                               g_free,
-                                               NULL);
-
-    new_path->properties = g_hash_table_new_full ((GHashFunc)str_pair_hash,
-                                                  str_pair_equal,
-                                                  g_free,
-                                                  NULL);
-
-    new_path->user_data = user_data;
-    new_path->get_datum = get_datum;
-
-    return new_path;
-}
-
-static void
-path_free (DRoutePath *path, gpointer user_data)
-{
-    g_string_chunk_free  (path->chunks);
-    g_ptr_array_free     (path->interfaces, TRUE);
-    g_hash_table_destroy (path->methods);
-    g_hash_table_destroy (path->properties);
-}
-
-static void *
-path_get_datum (DRoutePath *path, const gchar *pathstr)
-{
-    if (path->get_datum != NULL)
-        return (path->get_datum) (pathstr, path->user_data);
-    else
-        return path->user_data;
-}
-
-/*---------------------------------------------------------------------------*/
-
-DRouteContext *
-droute_new (DBusConnection *bus, const char *introspect_dir)
-{
-    DRouteContext *cnx;
-
-    cnx = g_new0 (DRouteContext, 1);
-    cnx->bus = bus;
-    cnx->registered_paths = g_ptr_array_new ();
-    cnx->introspect_dir = g_strdup(introspect_dir);
-
-    return cnx;
-}
-
-void
-droute_free (DRouteContext *cnx)
-{
-    g_ptr_array_foreach (cnx->registered_paths, (GFunc) path_free, NULL);
-    g_free (cnx->introspect_dir);
-    g_free (cnx);
-}
-
-/*---------------------------------------------------------------------------*/
-
-DBusConnection *
-droute_get_bus (DRouteContext *cnx)
-{
-    return cnx->bus;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static DBusObjectPathVTable droute_vtable =
-{
-  NULL,
-  &handle_message,
-  NULL, NULL, NULL, NULL
-};
-
-DRoutePath *
-droute_add_one (DRouteContext *cnx,
-                const char    *path,
-                const void    *data)
-{
-    DRoutePath *new_path;
-    gboolean registered;
-
-    new_path = path_new (cnx, (void *) data, NULL);
-
-    registered = dbus_connection_register_object_path (cnx->bus, path, &droute_vtable, new_path);
-    if (!registered)
-        oom();
-
-    g_ptr_array_add (cnx->registered_paths, new_path);
-    return new_path;
-}
-
-DRoutePath *
-droute_add_many (DRouteContext *cnx,
-                 const char    *path,
-                 const void    *data,
-                 const DRouteGetDatumFunction get_datum)
-{
-    DRoutePath *new_path;
-
-    new_path = path_new (cnx, (void *) data, get_datum);
-
-    if (!dbus_connection_register_fallback (cnx->bus, path, &droute_vtable, new_path))
-        oom();
-
-    g_ptr_array_add (cnx->registered_paths, new_path);
-    return new_path;
-}
-
-/*---------------------------------------------------------------------------*/
-
-void
-droute_path_add_interface(DRoutePath *path,
-                          const char *name,
-                          const DRouteMethod   *methods,
-                          const DRouteProperty *properties)
-{
-    gchar *itf;
-
-    g_return_if_fail (name != NULL);
-
-    itf = g_string_chunk_insert (path->chunks, name);
-    g_ptr_array_add (path->interfaces, itf);
-
-    for (; methods != NULL && methods->name != NULL; methods++)
-      {
-        gchar *meth;
-
-        meth = g_string_chunk_insert (path->chunks, methods->name);
-        g_hash_table_insert (path->methods, str_pair_new (itf, meth), methods->func);
-      }
-
-    for (; properties != NULL && properties->name != NULL; properties++)
-      {
-        gchar *prop;
-        PropertyPair *pair;
-
-        prop = g_string_chunk_insert (path->chunks, properties->name);
-        pair = g_new (PropertyPair, 1);
-        pair->get = properties->get;
-        pair->set = properties->set;
-        g_hash_table_insert (path->properties, str_pair_new (itf, prop), pair);
-      }
-}
-
-/*---------------------------------------------------------------------------*/
-
-/* The data structures don't support an efficient implementation of GetAll
- * and I don't really care.
- */
-static DBusMessage *
-impl_prop_GetAll (DBusMessage *message,
-                  DRoutePath  *path,
-                  const char  *pathstr)
-{
-    DBusMessageIter iter, iter_dict, iter_dict_entry;
-    DBusMessage *reply;
-    DBusError error;
-    GHashTableIter prop_iter;
-
-    StrPair *key;
-    PropertyPair *value;
-    gchar *iface;
-
-    void  *datum = path_get_datum (path, pathstr);
-
-    dbus_error_init (&error);
-    if (!dbus_message_get_args
-                (message, &error, DBUS_TYPE_STRING, &iface, DBUS_TYPE_INVALID))
-        return dbus_message_new_error (message, DBUS_ERROR_FAILED, error.message);
-
-    reply = dbus_message_new_method_return (message);
-    if (!reply)
-        oom ();
-
-    dbus_message_iter_init_append (reply, &iter);
-    if (!dbus_message_iter_open_container
-                (&iter, DBUS_TYPE_ARRAY, "{sv}", &iter_dict))
-        oom ();
-
-    g_hash_table_iter_init (&prop_iter, path->properties);
-    while (g_hash_table_iter_next (&prop_iter, (gpointer*)&key, (gpointer*)&value))
-      {
-        if (!g_strcmp0 (key->one, iface))
-         {
-           if (!value->get)
-              continue;
-           if (!dbus_message_iter_open_container
-                        (&iter_dict, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict_entry))
-              oom ();
-           dbus_message_iter_append_basic (&iter_dict_entry, DBUS_TYPE_STRING,
-                                           key->two);
-           (value->get) (&iter_dict_entry, datum);
-           if (!dbus_message_iter_close_container (&iter_dict, &iter_dict_entry))
-               oom ();
-         }
-      }
-
-    if (!dbus_message_iter_close_container (&iter, &iter_dict))
-        oom ();
-    return reply;
-}
-
-static DBusMessage *
-impl_prop_GetSet (DBusMessage *message,
-                  DRoutePath  *path,
-                  const char  *pathstr,
-                  gboolean     get)
-{
-    DBusMessage *reply = NULL;
-    DBusError error;
-
-    StrPair pair;
-    PropertyPair *prop_funcs = NULL;
-
-
-    dbus_error_init (&error);
-    if (!dbus_message_get_args (message,
-                                &error,
-                                DBUS_TYPE_STRING,
-                                &(pair.one),
-                                DBUS_TYPE_STRING,
-                                &(pair.two),
-                                DBUS_TYPE_INVALID))
-        return dbus_message_new_error (message, DBUS_ERROR_FAILED, error.message);
-
-    prop_funcs = (PropertyPair *) g_hash_table_lookup (path->properties, &pair);
-    if (!prop_funcs)
-        return dbus_message_new_error (message, DBUS_ERROR_FAILED, "Property unavailable");
-
-    if (get && prop_funcs->get)
-      {
-        void *datum = path_get_datum (path, pathstr);
-        DBusMessageIter iter;
-
-        _DROUTE_DEBUG ("DRoute (handle prop Get): %s|%s on %s\n", pair.one, pair.two, pathstr);
-
-        reply = dbus_message_new_method_return (message);
-        dbus_message_iter_init_append (reply, &iter);
-        if (!(prop_funcs->get) (&iter, datum))
-         {
-           dbus_message_unref (reply);
-            reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, "Get failed");
-         }
-      }
-    else if (!get && prop_funcs->set)
-      {
-        void *datum = path_get_datum (path, pathstr);
-        DBusMessageIter iter;
-
-        _DROUTE_DEBUG ("DRoute (handle prop Get): %s|%s on %s\n", pair.one, pair.two, pathstr);
-
-        dbus_message_iter_init (message, &iter);
-        /* Skip the interface and property name */
-        dbus_message_iter_next(&iter);
-        dbus_message_iter_next(&iter);
-        (prop_funcs->set) (&iter, datum);
-
-        reply = dbus_message_new_method_return (message);
-      }
-    else
-      {
-        reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, "Getter or setter unavailable");
-      }
-
-    return reply;
-}
-
-static DBusHandlerResult
-handle_properties (DBusConnection *bus,
-                   DBusMessage    *message,
-                   DRoutePath     *path,
-                   const gchar    *iface,
-                   const gchar    *member,
-                   const gchar    *pathstr)
-{
-    DBusMessage *reply;
-    DBusHandlerResult result = DBUS_HANDLER_RESULT_HANDLED;
-
-    if (!g_strcmp0(member, "GetAll"))
-       reply = impl_prop_GetAll (message, path, pathstr);
-    else if (!g_strcmp0 (member, "Get"))
-       reply = impl_prop_GetSet (message, path, pathstr, TRUE);
-    else if (!g_strcmp0 (member, "Set"))
-       reply = impl_prop_GetSet (message, path, pathstr, FALSE);
-    else
-       result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
-    if (reply)
-      {
-        dbus_connection_send (bus, reply, NULL);
-        dbus_message_unref (reply);
-      }
-
-    return result;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static const char *introspection_header =
-"<?xml version=\"1.0\"?>\n";
-
-static const char *introspection_node_element =
-"<node name=\"%s\">\n";
-
-static const char *introspection_footer =
-"</node>";
-
-static void
-append_interface (GString     *str,
-                  const gchar *interface,
-                  const gchar *directory)
-{
-    gchar *filename;
-    gchar *contents;
-    gsize len;
-
-    GError *err = NULL;
-
-    filename = g_build_filename (directory, interface, NULL);
-
-    if (g_file_get_contents (filename, &contents, &len, &err))
-      {
-        g_string_append_len (str, contents, len);
-      }
-    else
-      {
-        g_warning ("AT-SPI: Cannot find introspection XML file %s - %s",
-                   filename, err->message);
-        g_error_free (err);
-      }
-
-    g_string_append (str, "\n");
-    g_free (filename);
-    g_free (contents);
-}
-
-static DBusHandlerResult
-handle_introspection (DBusConnection *bus,
-                      DBusMessage    *message,
-                      DRoutePath     *path,
-                      const gchar    *iface,
-                      const gchar    *member,
-                      const gchar    *pathstr)
-{
-    GString *output;
-    gchar *final;
-    gint i;
-
-    DBusMessage *reply;
-
-    _DROUTE_DEBUG ("DRoute (handle introspection): %s\n", pathstr);
-
-    if (g_strcmp0 (member, "Introspect"))
-        return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
-    output = g_string_new(introspection_header);
-
-    g_string_append_printf(output, introspection_node_element, pathstr);
-
-    for (i=0; i < path->interfaces->len; i++)
-      {
-        gchar *interface = (gchar *) g_ptr_array_index (path->interfaces, i);
-        append_interface(output, interface, path->cnx->introspect_dir);
-      }
-
-    g_string_append(output, introspection_footer);
-    final = g_string_free(output, FALSE);
-
-    reply = dbus_message_new_method_return (message);
-    if (!reply)
-        oom ();
-    dbus_message_append_args(reply, DBUS_TYPE_STRING, &final,
-                             DBUS_TYPE_INVALID);
-    dbus_connection_send (bus, reply, NULL);
-
-    dbus_message_unref (reply);
-    g_free(final);
-    return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static DBusHandlerResult
-handle_other (DBusConnection *bus,
-              DBusMessage    *message,
-              DRoutePath     *path,
-              const gchar    *iface,
-              const gchar    *member,
-              const gchar    *pathstr)
-{
-    gint result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
-    StrPair pair;
-    DRouteFunction func;
-    DBusMessage *reply = NULL;
-
-    pair.one = iface;
-    pair.two = member;
-
-    _DROUTE_DEBUG ("DRoute (handle other): %s|%s on %s\n", member, iface, pathstr);
-
-    func = (DRouteFunction) g_hash_table_lookup (path->methods, &pair);
-    if (func != NULL)
-      {
-        void *datum = path_get_datum (path, pathstr);
-
-        reply = (func) (bus, message, datum);
-
-        if (!reply)
-          {
-            /* All D-Bus method calls must have a reply.
-             * If one is not provided presume that the call has a void
-             * return and no error has occured.
-             */
-            reply = dbus_message_new_method_return (message);
-          }
-        dbus_connection_send (bus, reply, NULL);
-        dbus_message_unref (reply);
-        result = DBUS_HANDLER_RESULT_HANDLED;
-      }
-    return result;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static DBusHandlerResult
-handle_message (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-    DRoutePath *path = (DRoutePath *) user_data;
-    const gchar *iface   = dbus_message_get_interface (message);
-    const gchar *member  = dbus_message_get_member (message);
-    const gint   type    = dbus_message_get_type (message);
-    const gchar *pathstr = dbus_message_get_path (message);
-
-    /* Check for basic reasons not to handle */
-    if (type   != DBUS_MESSAGE_TYPE_METHOD_CALL ||
-        member == NULL ||
-        iface  == NULL)
-        return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
-    if (!strcmp (iface, "org.freedesktop.DBus.Properties"))
-        return handle_properties (bus, message, path, iface, member, pathstr);
-
-    if (!strcmp (iface, "org.freedesktop.DBus.Introspectable"))
-        return handle_introspection (bus, message, path, iface, member, pathstr);
-
-    return handle_other (bus, message, path, iface, member, pathstr);
-}
-
-/*---------------------------------------------------------------------------*/
-
-DBusMessage *
-droute_not_yet_handled_error (DBusMessage *message)
-{
-    DBusMessage *reply;
-    gchar       *errmsg;
-
-    errmsg= g_strdup_printf (
-            "Method \"%s\" with signature \"%s\" on interface \"%s\" doesn't exist\n",
-            dbus_message_get_member (message),
-            dbus_message_get_signature (message),
-            dbus_message_get_interface (message));
-    reply = dbus_message_new_error (message,
-                                    DBUS_ERROR_UNKNOWN_METHOD,
-                                    errmsg);
-    g_free (errmsg);
-    return reply;
-}
-
-DBusMessage *
-droute_out_of_memory_error (DBusMessage *message)
-{
-    DBusMessage *reply;
-    gchar       *errmsg;
-
-    errmsg= g_strdup_printf (
-            "Method \"%s\" with signature \"%s\" on interface \"%s\" could not be processed due to lack of memory\n",
-            dbus_message_get_member (message),
-            dbus_message_get_signature (message),
-            dbus_message_get_interface (message));
-    reply = dbus_message_new_error (message,
-                                    DBUS_ERROR_NO_MEMORY,
-                                    errmsg);
-    g_free (errmsg);
-    return reply;
-}
-
-DBusMessage *
-droute_invalid_arguments_error (DBusMessage *message)
-{
-    DBusMessage *reply;
-    gchar       *errmsg;
-
-    errmsg= g_strdup_printf (
-            "Method \"%s\" with signature \"%s\" on interface \"%s\" was supplied with invalid arguments\n",
-            dbus_message_get_member (message),
-            dbus_message_get_signature (message),
-            dbus_message_get_interface (message));
-    reply = dbus_message_new_error (message,
-                                    DBUS_ERROR_INVALID_ARGS,
-                                    errmsg);
-    g_free (errmsg);
-    return reply;
-}
-
-/*END------------------------------------------------------------------------*/
diff --git a/droute/droute.h b/droute/droute.h
deleted file mode 100644 (file)
index a892c62..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008 Novell, Inc.
- * Copyright 2008 Codethink Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef _DROUTE_H
-#define _DROUTE_H
-
-#include <dbus/dbus.h>
-#include <glib.h>
-
-#include <droute/droute-variant.h>
-
-
-typedef DBusMessage *(*DRouteFunction)         (DBusConnection *, DBusMessage *, void *);
-typedef dbus_bool_t  (*DRoutePropertyFunction) (DBusMessageIter *, void *);
-
-typedef void        *(*DRouteGetDatumFunction) (const char *, void *);
-
-typedef struct _DRouteMethod DRouteMethod;
-struct _DRouteMethod
-{
-    DRouteFunction func;
-    const char *name;
-};
-
-typedef struct _DRouteProperty DRouteProperty;
-struct _DRouteProperty
-{
-    DRoutePropertyFunction get;
-    DRoutePropertyFunction set;
-    const char *name;
-};
-
-/*---------------------------------------------------------------------------*/
-
-typedef struct _DRouteContext DRouteContext;
-
-typedef struct _DRoutePath    DRoutePath;
-
-/*---------------------------------------------------------------------------*/
-
-DRouteContext *
-droute_new      (DBusConnection *bus,
-                 const char *introspect_dir);
-void
-droute_free     (DRouteContext *cnx);
-
-DRoutePath *
-droute_add_one  (DRouteContext *cnx,
-                 const char    *path,
-                 const void    *data);
-
-DRoutePath *
-droute_add_many (DRouteContext *cnx,
-                 const char    *path,
-                 const void    *data,
-                 const DRouteGetDatumFunction get_datum);
-
-void
-droute_path_add_interface (DRoutePath *path,
-                           const char *name,
-                           const DRouteMethod   *methods,
-                           const DRouteProperty *properties);
-
-DBusMessage *
-droute_not_yet_handled_error   (DBusMessage *message);
-
-DBusMessage *
-droute_invalid_arguments_error (DBusMessage *message);
-
-DBusMessage *
-droute_out_of_memory_error     (DBusMessage *message);
-
-DBusConnection *
-droute_get_bus (DRouteContext *cnx);
-
-#endif /* _DROUTE_H */
diff --git a/droute/test.interface.One b/droute/test.interface.One
deleted file mode 100644 (file)
index a8e2206..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<interface name="test.interface.One">
-  <method name="null"/>
-  <method name="getInt">
-    <arg direction="out" type="o"/>
-  </method>
-  <method name="setInt">
-    <arg direction="in" type="o"/>
-  </method>
-  <method name="getString">
-    <arg direction="out" type="s"/>
-  </method>
-  <method name="setString">
-    <arg direction="in" type="s"/>
-  </method>
-</interface>
diff --git a/droute/test.interface.Two b/droute/test.interface.Two
deleted file mode 100644 (file)
index ca661ec..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<interface name="test.interface.Two">
-  <method name="null"/>
-  <method name="getInt">
-    <arg direction="out" type="o"/>
-  </method>
-  <method name="setInt">
-    <arg direction="in" type="o"/>
-  </method>
-  <method name="getString">
-    <arg direction="out" type="s"/>
-  </method>
-  <method name="setString">
-    <arg direction="in" type="s"/>
-  </method>
-</interface>
diff --git a/idl/Accessibility.idl b/idl/Accessibility.idl
deleted file mode 100644 (file)
index 2b9b08e..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001-2005 Ximian, Inc. and Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ACCESSIBILITY_IDL_
-#define _ACCESSIBILITY_IDL_
-
-#ifndef  __ACCESSIBILITY_COMPILATION__
-#ifdef   __ORBIT_IDL__
-%{
-#pragma include_defs Accessibility.h
-%}
-#pragma inhibit push
-#endif
-#endif
-
-#ifndef _BONOBO_IDL_INCLUDED_
-#define _BONOBO_IDL_INCLUDED_
-#include <Bonobo_Unknown.idl>
-#endif /* _BONOBO_IDL_INCLUDED_ */
-
-/*!\mainpage AT-SPI Interfaces and Subinterfaces
- *
- * This is the main documentation page for the 
- * Assistive Technology Service Provider Interface (AT-SPI). 
- * 
- * \section apps Applications and Interface Components
- * Namespace Accessibility includes service APIs implemented by
- * participating applications and their user interface components:\n\n
- * Accessibility::Accessible\n 
- * Accessibility::Application\n
- * Accessibility::Desktop\n
- * Accessibility::Component\n
- * Accessibility::Hypertext\n
- * Accessibility::Image\n
- * Accessibility::Selection\n
- * Accessibility::StreamableContent\n
- * Accessibility::Table\n
- * Accessibility::Text\n
- * Accessibility::EditableText\n
- * Accessibility::Value
- *
- * \section types Enumerated Types
- * Accessibility defines a number of key enumerated types, including:\n\n
- * Accessibility::RelationType\n
- * Accessibility::Role\n
- * Accessibility::StateType\n
- * Accessibility::Event\n
- * Accessibility::EventDetails \n
- *
- * \section Registry
- * Accessibility also includes Accessibility::Registry,
- * which is the service used by assistive technologies and related
- * AT-SPI clients to register interest in certain classes of events,
- * enumerate the currently available desktop and application list,
- * and to synthesize certain kinds of device events.
- *
- * \section listeners Event Listener Interfaces
- * Accessibility::EventListener\n
- * Accessibility::DeviceEventListener
- *
- * \section helpers Helper Interfaces
- *
- * The following interfaces may be implemented by assistive technologies 
- * themselves, in order to export their services in a consistent manner or
- * in order to interoperate with other applications or desktop services.\n
- *
- * Accessibility::LoginHelper : Implemented by adaptive technologies which 
- * need to participate in user-authentication or login activities, and which
- * therefore may need negotiation with authentication agents or processes.\n
- *
- * Accessibility::Selector [NEW]: Implemented by user agents or assistive 
- * technologies which export lists of choices from which the end-user is 
- * expected to make selections.  Useful for various types of remote
- * activation or intercommunication between multiple ATs.
- **/
-
-#include <Bonobo_Unknown.idl>
-
-/*
- * Accessibility interfaces and subinterfaces
- */
-#include <Accessibility_Accessible.idl>
-#include <Accessibility_Action.idl>
-#include <Accessibility_Collection.idl>
-#include <Accessibility_Component.idl>
-#include <Accessibility_Document.idl>
-#include <Accessibility_Hyperlink.idl>
-#include <Accessibility_Image.idl>
-#include <Accessibility_Selection.idl>
-#include <Accessibility_StreamableContent.idl>
-#include <Accessibility_Table.idl>
-#include <Accessibility_Text.idl>
-#include <Accessibility_Value.idl>
-
-/*
- * Interfaces derived from Accessibility::Text
- */
-
-#include <Accessibility_EditableText.idl>
-#include <Accessibility_Hypertext.idl>
-
-/*
- * Utility interfaces and interfaces derived from Accessibility::Accessible
- */
-
-#include <Accessibility_Relation.idl>
-#include <Accessibility_State.idl>
-#include <Accessibility_Application.idl>
-#include <Accessibility_Desktop.idl>
-#include <Accessibility_Event.idl>
-#include <Accessibility_Registry.idl>
-#include <Accessibility_Role.idl>
-#include <Accessibility_LoginHelper.idl>
-#include <Accessibility_Selector.idl>
-
-#ifndef __ACCESSIBILITY_COMPILATION__
-#ifdef  __ORBIT_IDL__
-#pragma inhibit pop
-#endif
-#endif
-
-#endif
diff --git a/idl/Accessibility_Accessible.idl b/idl/Accessibility_Accessible.idl
deleted file mode 100644 (file)
index e0650a4..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ACCESSIBILITY_ACCESSIBLE_IDL
-#define _ACCESSIBILITY_ACCESSIBLE_IDL
-
-#include "Accessibility_Relation.idl"
-#include "Accessibility_State.idl"
-#include "Accessibility_Role.idl"
-
-module Accessibility {
-  
-  /** used by Text and Document: these correspond to the POSIX setlocale() enum values. **/
-  enum LOCALE_TYPE {
-      LOCALE_TYPE_MESSAGES,
-      LOCALE_TYPE_COLLATE,
-      LOCALE_TYPE_CTYPE,
-      LOCALE_TYPE_MONETARY,
-      LOCALE_TYPE_NUMERIC,
-      LOCALE_TYPE_TIME
-  };
-
-    /** A list of Relations, which may be many-to-many. */
-  typedef sequence<Relation> RelationSet;
-
-    /** 
-     * A list of name-value pairs, returned as a sequence of strings; 
-     * the name and value are separated by a colon. 
-     * @note "Attributes" returned in AttributeSet lists are distinct from, 
-     * and should not be confused with, "attribute" members of interfaces
-     * as defined by the IDL "attribute" keyword.  IDL attributes are
-     * strongly-typed values which are individually obtained via
-     * language-specific bindings whose syntax is dictated by the OMG's
-     * IDL language bindings.  For instance using the C language,
-     * the "Accessible::name" attribute is queried using
-     * \c Accessibility_Accessible__get_name (obj, &ev);
-     * Name-value pairs associated with Accessible instances are not
-     * normally redundant with these IDL attributes, i.e. there is no
-     * "accessible-name" attribute in the AttributeSet returned from
-     * Accessible::getAttributes().
-     *
-     * Where possible, the names and values in the name-value pairs
-     * should be chosen from well-established attribute namespaces
-     * using standard semantics.  For example, metadata namespace and
-     * values should be chosen from the 'Dublin Core' Metadata
-     * namespace using Dublin Core semantics:
-     * http://dublincore.org/dcregistry/
-     * Similarly, relevant structural metadata should be exposed
-     * using attribute names and values chosen from the CSS2 and WICD specification:
-     * http://www.w3.org/TR/1998/REC-CSS2-19980512
-     * WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).
-     * 
-     * Finally, note that typographic, semantic, and presentational annotations which
-     * are associated with text content, in particular which are associated with particular
-     * text ranges, should be exposed via Accessibility::Text::getAttributeRun instead of
-     * via these more general 'Object attributes'.
-     *
-     * @since AT-SPI 1.7.0
-     */
-  typedef sequence<string> AttributeSet;
-
-    /** 
-     * A list of accessible roles 
-     * @since AT-SPI 1.7.0
-     **/
-  typedef sequence<Role> RoleSet;
-
-    /** Used by Component and Text, a struct defining a bounding rectangle. 
-     * The relevant coordinate system is determined by the context of the
-     * API call which returned or receives the value.
-     */
-  struct BoundingBox {
-          long x; /**< the value corresponding to the minimum or leftmost x position. */
-          long y; /**< the value corresponding to the minimum y value.  */
-          long width; /**< the horizontal extent of the bounding box,
-                      * that is, the difference between the maximum and minimum
-                      * x coordinate bounds.
-                      */
-          long height; /**< the vertical extent of the bounding box, 
-                       * that is, the difference between the maximum and minimum
-                       * y coordinate bounds.
-                       */
-  };
-
-    
-  interface Application; /**< defined in Accessibility_Application.idl **/
-
-  /** 
-   * The base interface which is implemented by all accessible objects. 
-   * All objects support interfaces for querying their contained 'children' 
-   * and position in the accessible-object hierarchy, whether or not they
-   * actually have children.
-   *
-   * @note Events that may be emitted by instances of Accessible include:
-   * \li \c "object:property-change" A base (strongly-typed) object attribute has changed,
-   *         for instance "object:property-change:accessible-name".
-   *         Notifed property subtypes include accessible-name, accessible-description,
-   *         accessible-parent and accessible-role. 
-   *
-   * \li \c "object:children-changed" The number or identity of an object's children
-   *         has changed.
-   * \li \c "object:state-changed" The object's StateSet has had a state added
-   *         or removed.
-   * \li \c "object:active-descendant-changed" If the object includes 
-   *         STATE_MANAGES_DESCENDANTS, this event is fired to indicate that the 
-   *         descendant having STATE_ACTIVE has changed; this corresponds to
-   *         "micro" keyboard focus when the containing/emitting object has
-   *         "macro" or technical keyboard focus.  For instance, this event is
-   *         usually emitted while traversing tables and/or spreadsheet cells.
-   * \li \c "object:attribute-change" A weakly-typed property, as contained in the
-   *         AttributeSet returned by Accessible::getAttributes, has changed in value,
-   *         been added, or been removed from the object.
-   *         ("object:attribute-change" notifications were added in AT-SPI 1.7.0)
-   */
-  interface Accessible : Bonobo::Unknown {
-
-    /**
-     * a (short) \c string representing the object's name.
-     **/
-    attribute string name;
-
-    /**
-     * a \c string describing the object in more detail than \a name.
-     **/
-    attribute string description;
-
-    /**
-     * an ::Accessible object which is this object's containing object.
-     **/
-    readonly attribute Accessibility::Accessible parent;
-
-    /**
-     * childCount: the number of children contained by this object.
-     **/
-    readonly attribute long            childCount;
-
-    /**
-     * Determine whether an ::Accessible refers to the same object as another.
-     * This method should be used rather than brute-force comparison of
-     * object references (i.e. "by-value" comparison), as two object references
-     * may have different apparent values yet refer to the same object.
-     *
-     * @param obj: an ::Accessible object reference to compare to
-     * @returns: a \c boolean indicating whether the two object references
-     *         point to the same object. 
-     **/
-    boolean isEqual (in Accessible obj);
-
-    /**
-     * Get the accessible child of this object at \c index.
-     * @param index: an in parameter indicating which child is requested (zero-indexed).
-     * @returns: the 'nth' ::Accessible child of this object.
-     **/
-    Accessible         getChildAtIndex (in long index);
-
-    /**
-     * Get the index of this object in its parent's child list.
-     * @returns: a long integer indicating this object's index in the parent's list.
-     **/
-    long               getIndexInParent ();
-
-    /**
-     * Get a set defining this object's relationship to other accessible objects.
-     * @returns: a ::RelationSet defining this object's relationships.
-     **/
-    RelationSet        getRelationSet ();
-
-    /**
-     * Get the ::Role indicating the type of UI role played by this object.
-     *
-     * @returns: a ::Role indicating the type of UI role played by this object.
-     **/
-    Role               getRole ();
-
-    /**
-     * Get a string indicating the type of UI role played by this object.
-     *
-     * @returns: a UTF-8 string indicating the type of UI role played by this object.
-     **/
-    string             getRoleName ();
-
-    /**
-     * Get a string indicating the type of UI role played by this object,
-     * translated to the current locale.
-     *
-     * @returns: a UTF-8 string indicating the type of UI role played by this object.
-     **/
-    string             getLocalizedRoleName ();
-
-    /**
-     * Get the current state of the object as a ::StateSet.
-     * @returns: a ::StateSet encapsulating the currently true states of the object.
-     **/
-    StateSet   getState ();
-
-    /**
-     * Get a list of properties applied to this object as a whole, as an 
-     * ::AttributeSet consisting of name-value pairs.  As such these attributes
-     * may be considered weakly-typed properties or annotations, as distinct
-     * from the strongly-typed interface instance data declared using the IDL 
-     * "attribute" keyword.
-     *
-     * Not all objects have explicit "name-value pair" AttributeSet properties.  
-     *
-     * Attribute names and values may have any UTF-8 string value, however where possible,
-     * in order to facilitate consistent use and exposure of "attribute" properties by
-     * applications and AT clients, attribute names and values should chosen from  
-     * a publicly-specified namespace where appropriate.
-     *
-     * Where possible, the names and values in the name-value pairs
-     * should be chosen from well-established attribute namespaces
-     * using standard semantics.       
-     * For example, attributes of ::Accessible objects corresponding to XHTML content 
-     * elements should correspond to attribute names and values specified in the w3c 
-     * XHTML specification, at http://www.w3.org/TR/xhtml2, where such values are not 
-     * already exposed via a more strongly-typed aspect of the AT-SPI API.
-     * Metadata names and
-     * values should be chosen from the 'Dublin Core' Metadata
-     * namespace using Dublin Core semantics:
-     * http://dublincore.org/dcregistry/
-     * Similarly, relevant structural metadata should be exposed
-     * using attribute names and values chosen from the CSS2 and WICD specification:
-     * http://www.w3.org/TR/1998/REC-CSS2-19980512
-     * WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).
-     *
-     * @note Clients seeking semantic or typographical attributes associated with
-     * specific character spans of text content should use ::Text::getAttributeRun instead.
-     * The attributes returned by Accessible::getAttributes do not include
-     * "text attributes".
-     *
-     * @see ::Accessibility::Text::getAttributeRun
-     *
-     * @returns: an ::AttributeSet encapsulating any "attribute values" currently 
-     * defined for the object.
-     *
-     * @since AT-SPI 1.7.0
-     **/
-    AttributeSet       getAttributes ();
-
-    /**
-     * Get the containing Application for this object.
-     *
-     * @returns the Application instance to which this object belongs.
-     * @since AT-SPI 1.7.0
-     **/
-    Application getApplication ();
-
-     /** /cond future expansion */
-     void unimplemented ();
-     /** /endcond */
-
-  };
-};
-
-#endif
-
diff --git a/idl/Accessibility_Action.idl b/idl/Accessibility_Action.idl
deleted file mode 100644 (file)
index d14d90b..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-module Accessibility {
-    /**
-     * An interface through which a user-actionable user interface
-     * component can be manipulated.  Components which react to mouse or
-     * keyboard input from the user, (with the exception of pure text entry
-     * fields with no other function), should implement this interface.
-     * Typical actions include "click", "press", "release" (for instance for
-     * buttons), "menu" (for objects which have context menus invokable from 
-     * mouse or keyboard), "open" for icons representing files folders, and others.
-     */
-  interface Action : Bonobo::Unknown {
-
-    /**
-     * nActions: a \c long containing the number of actions this object supports.
-     * 
-     **/
-    readonly attribute long nActions;
-
-    /**
-     * getDescription:
-     * @param index: the index of the action 
-     *   for which a description is desired.
-     *
-     * Get the description of the specified action.  The description of an action
-     * may provide information about the result of action invocation, unlike the
-     * action name.
-     * @see getName.
-     *
-     * @returns: a \c string containing the description of the specified action.
-     *
-     **/
-    string getDescription (in long index);
-
-    /**
-     * getName:
-     * @param index: the index of the action 
-     *   whose name is requested.
-     *
-     * Get the name of the specified action.  Action names generally describe
-     * the user action, i.e. "click" or "press", rather then the result of 
-     * invoking the action.
-     *
-     * @returns: a \c string containing the name of the specified action.
-     *
-     **/
-    string getName (in long index);
-
-    /**
-     * doAction:
-     * @param index: the 0-based index of the action to perform.
-     *
-     * Causes the object to perform the specified action.
-     *
-     * @returns: a \c boolean indicating success or failure.
-     *
-     **/
-    boolean doAction (in long index);
-
-    /**
-     * getKeyBinding:
-     * @param index: the 0-based index of the action 
-     *   for which a key binding is requested.
-     *
-     * Get the key binding associated with a specific action.
-     *
-     * @returns: a \c string containing the key binding for the specified action,
-     *   or an empty string ("") if none exists.
-     **/
-    string getKeyBinding (in long index);
-
-      
-    /**
-     * \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-      /** \endcond */
-  };
-};
-
diff --git a/idl/Accessibility_Application.idl b/idl/Accessibility_Application.idl
deleted file mode 100644 (file)
index f65961f..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001-2004 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __ACCESSIBILITY_APPLICATION_DEFINED__
-#define __ACCESSIBILITY_APPLICATION_DEFINED__
-
-#include <Accessibility_Accessible.idl>
-
-module Accessibility {
-
-  /** 
-   * An interface identifying an object which is the root of the
-   * user interface Accessible hierarchy associated with a running application.
-   * Children of Application are typically, but not exclusively, 
-   * top-level windows.
-   * @note It is possible for an element deeper in an Accessibility stack to
-   * implement Application, for instance in the case of "embedded applications"
-   * which draw into toplevel windows associated with other applications
-   * from the user's point of view.
-   */
-  interface Application : Accessible {
-
-    /**
-     * A string indicating the type of user interface toolkit
-     * which is used by the application.
-     * @note Ordinarily clients of ::Application should be
-     * toolkit-agnostic, dependencies on this property should
-     * be avoided where possible.
-     **/
-    readonly attribute string toolkitName;
-
-    /**
-     * A string indicating the version number of the application's
-     * accessibility bridge implementation.
-     **/
-    readonly attribute string version;
-
-    /**
-     * The application instance's unique ID as assigned by the registry.
-     **/
-    attribute long id;
-
-    /**
-     * @param listener: an ::EventListener object which will receive the requested
-     *            events from the application's toolkits via toolit 'bridges'
-     * @param eventName: a UTF-8 string indicating the type of (toolkit-specific) event
-     *            being requested.  Not all applications can generate toolkit events of
-     *            a given type.
-     *
-     * Register with this application's toolkit for "toolkit-specific" event notifications.
-     * @note
-     *       For most event support, clients should use non-toolkit-specific events
-     *       whenever possible, via ::Registry::registerGlobalEventListener - this method 
-     *       is provided as a 'back door' when generic names do not exist for the events in 
-     *       question.
-     **/
-    void registerToolkitEventListener (in EventListener listener, in string eventName);
-
-    /**
-     * registerObjectEventListener:
-     * @param listener: an ::EventListener object which will receive the requested
-     *            events
-     * @param eventName: a UTF-8 string indicating the type of (toolkit-specific) event
-     *            being requested.  
-     * Register with this application toolkit for "Accessibility::Accessible" 
-     * event notifications. 
-     * @note: SUBJECT TO DEPRECATION.
-     **/
-    void registerObjectEventListener (in EventListener listener, in string eventName);
-
-    /**
-     * Request that the application temporarily stop sending events.
-     * In most cases this should pause the application's main event loop.
-     *
-     * @returns: \c true if the request succeeded, \c false otherwise.
-     *
-     * @note: This method is not implemented in most toolkits, and therefore should be treated with caution.
-     **/
-    boolean       pause ();
-
-    /**
-     * Request that the application resume sending events.
-     *
-     * @returns: \c True if the request succeeded, \c False otherwise.
-     **/
-    boolean       resume ();
-
-    /**
-     * Gets the locale in which the application is currently operating.
-     * For the current message locale, use \a lctype LOCALE_TYPE_MESSAGES.
-     *
-     * @param lctype The LocaleType for which the locale is queried.
-     * @returns a string compliant with the POSIX standard for locale description.
-     **/
-    string       getLocale (in LOCALE_TYPE lctype);
-
-    /**\cond (This comment tells doxygen not to document these) */
-    void          unImplemented_ ();
-    void          unImplemented2_ ();
-    void          unImplemented3_ ();
-    /**\endcond */
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_Collection.idl b/idl/Accessibility_Collection.idl
deleted file mode 100644 (file)
index 5f23f63..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
- /* 
-  * AT-SPI - Assistive Technology Service Provider Interface 
-  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
-  *
-  * Copyright 2005 Sun Microsystems, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Library General Public
-  * License as published by the Free Software Foundation; either
-  * version 2 of the License, or (at your option) any later version.
-  *
-  * This library is distributed in the hope that it will be useful,
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  * Library General Public License for more details.
-  *
-  * You should have received a copy of the GNU Library General Public
-  * License along with this library; if not, write to the
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-
-#ifndef __ACCESSIBILITY_COLLECTION_DEFINED__
-#define __ACCESSIBILITY_COLLECTION_DEFINED__
-module Accessibility {
-  
-
-  typedef sequence<Accessible> AccessibleSet;
-
-     interface MatchRule {
-     };
-
-
-     interface Collection : Bonobo::Unknown {
-       enum SortOrder {
-           SORT_ORDER_INVALID,
-           SORT_ORDER_CANONICAL, 
-           SORT_ORDER_FLOW, 
-           SORT_ORDER_TAB, 
-           SORT_ORDER_REVERSE_CANONICAL, 
-           SORT_ORDER_REVERSE_FLOW, 
-           SORT_ORDER_REVERSE_TAB, 
-           SORT_ORDER_LAST_DEFINED
-       };
-   
-       enum MatchType {
-           MATCH_INVALID, 
-           MATCH_ALL, 
-           MATCH_ANY, 
-          MATCH_NONE,
-          MATCH_EMPTY,
-           MATCH_LAST_DEFINED
-          };
-
-       enum TreeTraversalType {
-        
-        TREE_RESTRICT_CHILDREN,
-        TREE_RESTRICT_SIBLING,
-        TREE_INORDER,
-        TREE_LAST_DEFINED
-       };
-
-       boolean isAncestorOf (in Accessible object); 
-  
-       MatchRule        createMatchRule (in StateSet states,
-                                         in MatchType statematchtype,
-                                          in AttributeSet attributes,
-                                          in MatchType attributematchtype,
-                                          in RoleSet roles,
-                                         in MatchType rolematchtype,
-                                          in string interfaces,
-                                          in MatchType interfacematchtype,
-                                          in boolean invert);
-
-       void             freeMatchRule (in MatchRule rule);
-
-       AccessibleSet getMatches (in MatchRule rule,
-                                  in SortOrder sortby,
-                                 in long count,
-                                  in boolean traverse); 
-       
-       AccessibleSet getMatchesTo (in Accessible current_object,
-                                   in MatchRule rule, 
-                                   in SortOrder sortby,
-                                   in TreeTraversalType tree,
-                                   in boolean recurse,
-                                   in long count,
-                                   in boolean traverse);
-
-
-        AccessibleSet getMatchesFrom (in Accessible current_object,
-                                     in MatchRule rule, 
-                                     in SortOrder sortby, 
-                                     in TreeTraversalType tree,
-                                     in long count,
-                                     in boolean traverse);
-
-        Accessible getActiveDescendant ();
-        
-       void unImplemented ();
-       void unImplemented2 ();
-        void unImplemented3 ();
-        void unImplemented4 ();        
-   };
-};
-
-#endif
diff --git a/idl/Accessibility_Component.idl b/idl/Accessibility_Component.idl
deleted file mode 100644 (file)
index f4f063e..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility_Event.idl>
-
-module Accessibility {
-
-  /** 
-   * The ComponentLayer of a Component instance indicates its relative stacking order
-   * with respect to the onscreen visual representation of the UI.
-   * ComponentLayer, in combination with Component 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 ComponentLayer categories support
-   * further z-ordering information, with respect to their peers in the same layer:
-   * namely, LAYER_WINDOW and 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:
-   * \li LAYER_BACKGROUND
-   * \li LAYER_WINDOW
-   * \li LAYER_MDI
-   * \li LAYER_CANVAS
-   * \li LAYER_WIDGET
-   * \li LAYER_POPUP
-   * \li LAYER_OVERLAY
-   */
-  enum ComponentLayer {
-    LAYER_INVALID,/**< Indicates an error condition or uninitialized value. */
-    LAYER_BACKGROUND,/**< The bottom-most layer, over which everything else is painted. 
-                     * The 'desktop background' is generally in this layer. */
-    LAYER_CANVAS,/**< The 'background' layer for most content renderers and UI Component 
-                 * containers. */
-    LAYER_WIDGET,/**< The layer in which the majority of ordinary 'foreground' widgets reside.*/
-    LAYER_MDI,/**< A special layer between LAYER_CANVAS and LAYER_WIDGET, in which the
-              * 'pseudo windows' (e.g. the MDI frames) reside. 
-              * @see Component::getMDIZOrder */
-    LAYER_POPUP,/**< A layer for popup window content, above LAYER_WIDGET. */
-    LAYER_OVERLAY,/**< The topmost layer. */
-    LAYER_WINDOW,/**< The layer in which a toplevel window background usually resides. */
-    LAYER_LAST_DEFINED/**< Used only to determine the end of the enumeration. */
-  };
-
-  /**
-   * The Component interface is implemented by objects which occupy on-screen space, e.g. objects
-   * which have onscreen visual representations.  The methods in Component allow clients to identify
-   * where the objects lie in the onscreen coordinate system, their relative size, stacking order, and
-   * position.  It also provides a mechanism whereby keyboard focus may be transferred to specific
-   * user interface elements programmatically.  This is a 2D API, coordinates of 3D objects are projected into the
-   * 2-dimensional screen view for purposes of this interface.
-   *
-   * @note the meaning and defined values of the \c short \c coord_type parameter used by some
-   * Component methods is as follows:
-   * \li 0 indicates coord_type_xy_screen, coordinates are relative to the display screen, in pixels.
-   * \li 1 indicates coord_type_xy_window, coordinates are relative to the current toplevel window, in pixels.
-   *
-   * @note Events emitted by Component instances include:
-   * \li \c "object:bounds-changed"
-   * \li \c "object:visible-data-changed"
-   */
-  interface Component : Bonobo::Unknown {
-      
-        /** 
-        * @returns \c True if the specified point lies within the Component's bounding box, 
-        * \c False otherwise. 
-        */
-        boolean contains (in long x, in long y, in short coord_type);
-        /** 
-        * @returns the Accessible child whose bounding box contains the specified point. 
-        */
-        Accessible getAccessibleAtPoint (in long x, in long y, in short coord_type);
-        /** 
-        * Obtain the Component's bounding box, in pixels, relative to the specified coordinate system. 
-        * @returns a BoundingBox which entirely contains the object's onscreen visual representation.
-        **/
-        BoundingBox getExtents (in short coord_type);
-        /** 
-        * Obtain the position of the current component in the coordinate system specified
-        * by \c coord_type.
-        * @param coord_type
-        * @param x an out parameter which will be back-filled with the returned x coordinate.
-        * @param y an out parameter which will be back-filled with the returned y coordinate.
-        */
-        void getPosition (out long x, out long y, in short coord_type);
-        /** 
-        * Obtain the size, in the coordinate system specified by \c coord_type, 
-        * of the rectangular area which fully contains the object's 
-        * visual representation, without accounting for viewport clipping. 
-        * @param width the object's horizontal extents in the specified coordinate system.
-        * @param height the object's vertical extents in the specified coordinate system.
-        */
-        void getSize (out long width, out long height);
-        /** @returns the ComponentLayer in which this object resides. */
-       ComponentLayer getLayer ();
-        /** 
-        * Obtain the relative stacking order (i.e. 'Z' order) of an object.
-        * Larger values indicate that an object is on "top" of the stack, therefore
-        * objects with smaller MDIZOrder may be obscured by objects with a larger MDIZOrder,
-        * but not vice-versa. 
-        * @note only relevant for objects in LAYER_MDI or LAYER_WINDOW 
-        * @returns an integer indicating the object's place in the stacking order.
-        */
-       short getMDIZOrder ();
-        /**
-        * Request that the object obtain keyboard focus.
-        *  
-        * @returns \c True if keyboard focus was successfully transferred to the Component. 
-        */
-        boolean grabFocus ();
-        /** 
-        * Register an EventListener for notification when this object receives keyboard focus.
-        * @note you probably want to register for ¨focus:¨ events via 
-        * Registry::registerGlobalEventListener instead. 
-        */
-        void registerFocusHandler (in EventListener handler);
-        /**
-        * Request that an EventListener registered via registerFocusHandler no longer be notified 
-        * when this object receives keyboard focus.
-        */
-        void deregisterFocusHandler (in EventListener handler);
-
-        /**
-        * Obtain the alpha value of the component.  An alpha value of 1.0 or greater
-        * indicates that the object is fully opaque, and an alpha value of 0.0 indicates
-        * that the object is fully transparent.  Negative alpha values have no defined
-        * meaning at this time.
-        *
-        * @note alpha values are used in conjunction with Z-order calculations to
-        * determine whether an object wholly or partially obscures another object's 
-        * visual intersection, in the event that their bounds intersect.
-        *
-        * @see STATE_OPAQUE
-        *
-        * @since AT-SPI 1.7.0
-        */
-        double getAlpha ();
-
-       /** \cond
-        * unImplemented:
-        *
-        * placeholders for future expansion.
-        */
-       void unImplemented ();
-       void unImplemented2 ();
-       void unImplemented3 ();
-        /** \endcond */
-  };
-};
diff --git a/idl/Accessibility_Desktop.idl b/idl/Accessibility_Desktop.idl
deleted file mode 100644 (file)
index 020a050..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __ACCESSIBILITY_DESKTOP_DEFINED__
-#define __ACCESSIBILITY_DESKTOP_DEFINED__
-
-#include <Accessibility_Accessible.idl>
-
-module Accessibility {
-    /**
-     * At the moment this is only a marker interface, it acts just like
-     * any other Accessible.  In all known implementations, the
-     * children are all instances of Application, but this is not
-     * guaranteed by this interface.
-     **/
-    interface Desktop : Accessible {
-         /** \cond
-          * unImplemented:
-          *
-          * placeholders for future expansion.
-          */
-         void unImplemented_ ();
-         void unImplemented2_ ();
-         void unImplemented3_ ();
-         void unImplemented4_ ();
-       /** \endcond */
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_Document.idl b/idl/Accessibility_Document.idl
deleted file mode 100644 (file)
index 42d7338..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2005 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __ACCESSIBILITY_DOCUMENT_DEFINED__
-#define __ACCESSIBILITY_DOCUMENT_DEFINED__
-
-module Accessibility {
-
-    /**
-     * Primarily a 'tagging' interface which indicates the start of 
-     * document content in the Accessibility hierarchy.  
-     * Accessible objects below the node implementing
-     * Document are normally assumed to be part of the document content.
-     * Attributes of Document are those attributes associated with the document 
-     * as a whole.  Objects that implement Document are normally expected to
-     * implement Collection as well.
-     *
-     * \see Accessibility::Collection
-     */
-  interface Document : Bonobo::Unknown {
-
-     /**
-     * Gets the locale associated with the document's content.
-     * e.g. the locale for LOCALE_TYPE_MESSAGES.
-     *
-     * @returns a string compliant with the POSIX standard for locale description.
-     **/
-    string       getLocale ();
-
-      /**
-       * Gets the value of a single attribute, if specified for the document as a whole.
-       *
-       * @param attributename: a string indicating the name of a specific attribute 
-       * (name-value pair) being queried.
-       * 
-       * @returns a string corresponding to the value of the specified attribute, or
-       * an empty string if the attribute is unspecified for the object.
-       **/
-    string       getAttributeValue (in string attributename);
-
-      /**
-       * Gets all attributes specified for a document as a whole.  
-       * For attributes which change within 
-       * the document content, see Accessibility::Text::getAttributes instead.
-       * 
-       * @returns an ::AttributeSet containing the attributes of the document, 
-       * as name-value pairs.
-       *
-       * @since AT-SPI 1.8.0
-       **/
-    AttributeSet  getAttributes ();
-
-    /**\cond **/
-    void          unImplemented_ ();
-    void          unImplemented2_ ();
-    void          unImplemented3_ ();
-    void          unImplemented4_ ();
-    /**\endcond **/
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_EditableText.idl b/idl/Accessibility_EditableText.idl
deleted file mode 100644 (file)
index 6e878ad..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility.idl>
-
-module Accessibility {
-
-  /** 
-   * Derived from interface Text, EditableText provides methods for
-   * modifying textual content of components which support editing.
-   * EditableText also interacts with the system clipboard via copyText,
-   * cutText, and pasteText.
-   * 
-   * @note read-only instances of EditableText are possible; 
-   *       These may be instances of a general-purpose component type which are
-   *       sometimes, but not always, user-editable, or may be
-   *       components which are temporarily or circumstantially
-   *       in a non-editable state. 
-   */
-  interface EditableText : Text {
-    /** 
-     * Replace the text contents with a new string, discarding the old contents.
-     *
-     * @param newContents a UTF-8 string with which the text object's contents will be replaced.
-     * @returns \c True if the text content was successfully changed, \c False otherwise.
-     */
-    boolean setTextContents (in string newContents);
-    /** 
-     * Insert new text contents into an existing text object at a given location, while retaining
-     * the old contents.
-     * @param position the character offset into the Text implementor's content at which the
-     *        new content will be inserted.
-     * @param text a UTF-8 string of which \c length characters will be inserted into the text 
-     *         object's text buffer.
-     * @param length the number of characters of \c text to insert.  If the character count
-     *         of \c text is less than or equal to \c length, the entire contents of \c text
-     *         will be inserted.
-     * 
-     * @returns \c True if the text content was successfully inserted, \c False otherwise.
-     */
-    boolean insertText (in long position, in string text, in long length);
-    /**
-     * Apply a particular set of attributes to a range of text.
-     *
-     *
-     * @returns \c True if the text attributes were successfully modified, \c False otherwise.
-     */
-    boolean setAttributes (in string attributes, in long startPos, in long endPos);
-    /**
-     * Copy a range of text into the system clipboard.
-     * @param startPos the character offset of the first character in the range of text being
-     *        copied.
-     * @param endPos the offset of the first character past the end of the range of text
-     *        being copied.
-     */
-    void    copyText (in long startPos, in long endPos);
-    /**
-     * Excise a range of text from a Text object, copying it into the system clipboard.
-     * @param startPos the character offset of the first character in the range of text being
-     *        cut.
-     * @param endPos the offset of the first character past the end of the range of text
-     *        being cut.
-     * @returns \c True if the text was successfully cut, \c False otherwise.
-     */
-    boolean cutText (in long startPos, in long endPos);
-    /**
-     * Excise a range of text from a Text object without copying it into the system clipboard.
-     * @param startPos the character offset of the first character in the range of text being
-     *        deleted.
-     * @param endPos the offset of the first character past the end of the range of text
-     *        being deleted.
-     * @returns \c True if the text was successfully deleted, \c False otherwise.
-     */
-    boolean deleteText (in long startPos, in long endPos);
-    /**
-     * Copy the text contents of the system clipboard, if any, into a Text object, 
-     * inserting it at a particular character offset.
-     *
-     * @param position the character offset before which the text will be inserted.
-     * @returns \c True if the text was successfully pasted into the Text object, \c False otherwise.
-     */
-    boolean pasteText (in long position);
-
-    /**
-     * unImplemented:
-     *
-     * placeholders for future expansion. Note that these are named
-     * 'unimplemented5 and unimplemented6' to avoid conflict with 
-     * placeholders from Accessibility::Text.
-     */
-    void unImplemented5 ();
-    void unImplemented6 ();
-    void unImplemented9 ();
-    void unImplemented10 ();
-    void unImplemented11 ();
-    void unImplemented12 ();
-  };
-};
diff --git a/idl/Accessibility_Event.idl b/idl/Accessibility_Event.idl
deleted file mode 100644 (file)
index 10d2d9d..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2002 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __ACCESSIBILITY_EVENT_DEFINED__
-#define __ACCESSIBILITY_EVENT_DEFINED__
-
-module Accessibility
-{
-  interface Accessible;
-
-  /** 
-   * A struct encapsulating detailed information about an Event.
-   * This struct supercedes the previous use of the 'any' field 
-   * in EventDetails; the content previously stored in Event::any_data
-   * is now stored in EventDetails::any_data, and Event::any_data
-   * points to an instance of the EventDetails structure, if
-   * the object's implementation supports event detail reporting,
-   * otherwise Event::any_data contains CORBA_OBJECT_NIL.
-   *
-   * @since AT-SPI 1.7.0
-   */
-  struct EventDetails {
-      Application host_application;
-      Role        source_role;
-      string      source_name;
-      any         any_data;
-  };
-
-  /**
-   * A structure encapsulating information about an event
-   * for which notification was requested.  Usually such notification
-   * is requested via a call to Registry::registerGlobalEventListener.
-   * The structure contains a colon-delimited string indicating the event
-   * type, a reference to the generating Accessible, two detail fields whose
-   * interpretation is event-type-specific, and a final field containing 
-   * event-type-specific data.
-   *
-   * @note Since AT-SPI 1.7.0 the 'any' field contains an EventDetails
-   * struct, which encapsulates additional information about the event
-   * and its generating object.
-   */
-  struct Event {
-    /** A colon-delimited string indicating the type of the event.
-     *  The string can be interpreted as 
-     *  \c class:type:subtype
-     *  For instance ¨object:text-changed:insert¨ is an event 
-     *  from the 'Object' class, which corresponds to Accessible objects
-     *  general, the type of the event is a ¨text-changed¨ event (i.e. a change in the
-     *  content of an implementor of the Text interface), and the
-     *  specific subtype of the change is an insertion event.
-     *
-     *  Event classes include the following:
-     *  \li focus:   an object has received keyboard focus.  This event has no type or subtype.
-     *  \li window:  a toplevel window has changed state.
-     *  \li object:  an object (i.e. Accessible) has undergone some change in state, content, 
-     *               or hierarchy
-     *  \li document:a change to a document's content has occurred, or its
-     *               content loading status has changed.
-     *  \li mouse:   an event originating from the pointing device.  Rarely used;
-     *               in most cases clients will wish to register for pointer events via
-     *               the DeviceEventController::registerDeviceEvent method instead.
-     *  \li keyboard: an event indicating that the keyboard state (for example, the
-     *               modifier state) has changed significantly.
-     *               "keyboard:" events are not sent for individual keystrokes except as
-     *               a side-effect of certain keys, for instance modifier keys.
-     *               Clients interested in key events should listen for DeviceEvents
-     *               via DeviceEventController::registerKeystrokeListener instead.
-     *
-     * @note For more information on specific event types, see the documentation for
-     * each of the individual interfaces supported by some Accessible objects.
-     *
-     * @see Accessible, Component, Image, Selection, Table, Text, Value.
-     */ 
-    string     type;
-    /** 
-     * The Accessible object which is the source of the event.  The source object is the object
-     * to which the change inferred by the event emission occurs; for instance,
-     * the object emitting a ¨object:parent-changed¨ event is the child, not the parent.
-     * Likewise, the event source of an ¨object:children-changed:insert¨ event is the parent,
-     * not the inserted child.
-     */
-    Accessible source;
-    /** An integer whose meaning is event type dependent.  It may indicate the offset of
-     * text being inserted, in the case of ¨object:text-changed:insert¨, or the index of a
-     * newly added child in the case of ¨object:children-changed:add¨.  
-     * @note since most AT-SPI clients react to events via an asynchronous queue, for 
-     * performance reasons, this field may be of limited utility unless the client maintains
-     * a large client-side cache of the hierarchy and contained data.  This is because by the time
-     * such an event is asynchronously processed, the state of the originating object may have 
-     * changed.  In other words, the data in the detail1 member is not state-coherent outside
-     * of the event handler.  More useful results are gotten by examination of the 'any_data' field.
-     */
-    long       detail1;
-    /** see description of detail2 */
-    long       detail2;
-    /** 
-     * A generic storage location for event-type-specific data which provides more specific
-     * information about the event; for instance, in AT-SPI versions prior to 1.7.0,
-     * in the case of ¨object:text-changed:insert¨ events, this field contains a string 
-     * indicating the inserted text.
-     * 
-     * @note Since AT-SPI 1.7.0, the data contained in this field is an EventDetails struct.
-     */
-    any        any_data;
-  };
-
-  /** 
-   * A generic interface implemented by objects for the 
-   * receipt of event notifications.  EventListener is the interface from which 
-   * Accessibility::Registry is derived, and via which clients of the Registry
-   * receive notification of changes to an application's user interface and content.
-   */
-  interface EventListener : Bonobo::Unknown {
-    /** 
-     * Synchronously notify an EventListener that an event has occurred, by passing it an 
-     * Event struct. 
-     * @param e The Event about which the listener is being notified.
-     */
-    void notifyEvent (in Event e);
-
-/** \cond */
-    void unImplemented_ ();
-    void unImplemented2_ ();
-    void unImplemented3_ ();
-    void unImplemented4_ ();
-/** \endcond */
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_Hyperlink.idl b/idl/Accessibility_Hyperlink.idl
deleted file mode 100644 (file)
index 90eb3bd..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility_Accessible.idl>
-
-module Accessibility {
-
-  /**
-   * Instances of Hyperlink are returned by Hypertext objects, and are
-   * the means by which end users and clients interact with linked, and in
-   * some cases embedded, content.  Hyperlinks may have multiple "anchors",
-   * where an anchor corresponds to a reference to a particular resource with
-   * a corresponding resource identified (URI).  Hyperlinks may be 
-   * queried for their URIs, or queried for the objects corresponding to their
-   * anchors.  The objects thus obtained are instances of Accessible,
-   * and may be queried, and manipulated via the Action interface. 
-   *
-   * @note A Hyperlink implementor is normally NOT an Accessible; 
-   * the preferred usage is for a Hyperlink's associated "objects"
-   * (accessed via the ::getObject method) are Accessibles.  This means
-   * that Actions such as "open link" are normally invoked on
-   * the result of Hyperlink::getObject rather than directly on the 
-   * Hyperlink instance. For historical reasons some implementors of Hyperlink
-   * implement Action as well.  This usage on the part of implementing
-   * applications and toolkits is discouraged, but clients of Hyperlink
-   * should be aware of it and prepared to handle such usage.
-   */
-  interface Hyperlink : Bonobo::Unknown {
-    /** the number of separate anchors associated with this Hyperlink */
-    readonly attribute short nAnchors;
-    /** 
-     * the starting offset within the containing Hypertext content 
-     * with which this Hyperlink is associated 
-     */
-    readonly attribute long startIndex;
-    /** 
-     * the ending offset within the containing Hypertext content 
-     * with which this Hyperlink is associated; that is, the offset of the
-     * first element past the range within the Hypertext associated with
-     * this Hyperlink. 
-     */
-    readonly attribute long endIndex;
-    /** 
-     * Gets the i'th object, (where i is an integer between 0 and
-     * Hyperlink::numAnchors - 1, inclusive) associated with a Hyperlink.
-     * The objects returned are usually actionable (i.e. they should implement
-     * Accessibility::Action), and the available actions often include
-     * "open", "bookmark", "save link as", etc.  They may also implement
-     * Accessibility::StreamableContent, although clients can normally use 
-     * ::getURI to obtain a resource locator via which the object's
-     * data may be accessed.
-     * 
-     * @note the most common application for 'multi anchor'
-     * hyperlinks in HTML is probably "client side imagemaps".
-     * A clickable image which uses the HTML 'usemap' attribute
-     * should have one anchor for every &lt;area&gt; element that
-     * includes an HREF.  The objects corresponding to these map
-     * areas may implement Accessibility::Component, to represent
-     * their onscreen bounding box, and may expose their 'shape' as
-     * as name-value pair via Accessibility::Accessible::getAttributeSet.
-     *
-     * @returns an Accessible object instance representing the
-     * Hyperlink's ith anchor, or through which the content associated with
-     * the \c ith anchor can be
-     * accessed.
-     */
-    Accessible getObject (in long i);
-    /** 
-     * Obtain a resource locator ('URI') which can be used to 
-     * access the content to which this link "points" or is connected.
-     * @returns a string corresponding to the URI of the Hyperlink's
-     * 'ith' anchor, if one exists, or a NIL string otherwise.
-     */
-    string getURI (in long i);
-    /** 
-     * Check the hyperlink to see if a connection to its backing
-     * content can be established, or if its URI is valid.
-     * @note instances of invalid hyperlinks include links with malformed
-     *       URIs, or for which a contact to the service provider
-     *       specified in the URI cannot be established.
-     * @returns \c True if the object's content is available, or
-     *          \c False if the hyperlink's URI is invalid, or 
-     *          a connection to the resource can not be established.
-     */
-    boolean isValid ();
-    /** \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-    /** \endcond */
-  };
-};
diff --git a/idl/Accessibility_Hypertext.idl b/idl/Accessibility_Hypertext.idl
deleted file mode 100644 (file)
index 552483d..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility.idl>
-
-module Accessibility {
-  /** 
-   * An interface used for objects which implement linking between
-   * multiple resource or content locations, or multiple 'markers'
-   * within a single document.  A Hypertext instance is associated with
-   * one or more Hyperlinks, which are associated with particular
-   * offsets within the Hypertext's included content.
-   *
-   * @note While this interface is derived from ::Text, 
-   *       there is no requirement that Hypertext instances have
-   *       textual content; they may implement ::Image as well,
-   *       and Hyperlinks need not have non-zero text offsets.
-   */
-  interface Hypertext : Bonobo::Unknown {
-    /** 
-     * Query the hypertext object for the number of Hyperlinks it
-     * contains.
-     *
-     * @returns the number of Hyperlinks associated with this Hypertext
-     *  object, as a long integer.
-     */
-    long getNLinks ();
-    /** 
-     * Get one of the Hyperlinks associated with this Hypertext object,
-     * by index.
-     *
-     * @param linkIndex an integer from 0 to getNLinks() - 1.
-     * @returns the Hyperlink in this Hypertext object.
-     */
-    Hyperlink getLink (in long linkIndex);
-    /** 
-     * Get the hyperlink index, if any, associated with a 
-     * particular character offset in the Hypertext object.
-     * For Hypertext implementors without textual content, all
-     * hyperlinks are associated with character offset '0'.
-     *
-     * @return the index of the Hyperlink associated with character
-     *     offset \c characterIndex, or -1 if no Hyperlink is associated
-     *     with that character offset.
-     */
-    long getLinkIndex (in long characterIndex);
-
-    /** \cond */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-    /** \endcond */
-  };
-};
diff --git a/idl/Accessibility_Image.idl b/idl/Accessibility_Image.idl
deleted file mode 100644 (file)
index 6cf50f8..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 - 2005 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "Accessibility_Accessible.idl"
-
-module Accessibility {
-
-  /** 
-   * An interface implemented by objects which render image data or 
-   * pictorial information to the screen.  When onscreen components include
-   * graphical information that is not purely intended to enhance "3d effect"
-   * or visual layout, but which conveys some semantic or informational 
-   * content to the sighted user, they should implement Image, and that 
-   * semantic content should be conveyed textually to the extent possible 
-   * via the image description, as well as the Accessible::name and 
-   * Accessible::description properties.  
-   */
-  interface Image : Bonobo::Unknown  {
-    /**
-     * A UTF-8 string providing a textual description
-     * of what is visually depicted in the image.
-     *
-     * @note It is recommended that imageDescription be the shorter
-     * of the available image descriptions, for instance "alt text"
-     * in HTML images, and a longer description be provided in
-     * Accessible::accessible-description, if available.
-     * A short, one or two word label for the image should be provided in
-     * Accessible::accessible-name.
-     */
-    readonly attribute string imageDescription;
-    /** 
-     * A string corresponding to the POSIX LC_MESSAGES locale used 
-     * by the imageDescription.
-     * @since AT-SPI 1.7.0
-     */
-    readonly attribute string imageLocale;
-    /**
-     * Obtain a bounding box which entirely contains the image contents,
-     * as displayed on screen.  The bounds returned do not account for
-     * any viewport clipping or the fact that the image may be
-     * partially or wholly obscured by other onscreen content.
-     * @note This method returns the bounds of the current onscreen
-     * view, and not the nominal size of the source data in the
-     * event that the original image has been rescaled.
-     *
-     * @param coordType If 0, the returned bounding box position is returned
-     * relative to the screen; if 1, the bounding box position is returned 
-     * relative to the containing window.
-     * @returns a BoundingBox enclosing the image's onscreen representation.
-     */
-    BoundingBox getImageExtents (in short coordType);
-    /**
-     * Get the coordinates of the current image position on screen.
-     *
-     * @param x Back-filled with the x coordinate of the 
-     * onscreen image (i.e. the minimum x coordinate)
-     * @param y Back-filled with the y coordinate of the 
-     * onscreen image (i.e. the minimum y coordinate)
-     * @param coordType If 0, the returned x and y coordinates are 
-     * returned relative to the screen; 
-     * if 1, they are returned relative to the containing window.
-     */
-    void getImagePosition (out long x, out long y, in short coordType);
-    /**
-     * Obtain the width and height of the current onscreen view of the
-     * image.  The extents returned do not account for
-     * any viewport clipping or the fact that the image may be
-     * partially or wholly obscured by other onscreen content.
-     * @note This method returns the size of the current onscreen
-     * view, and not the nominal or "original" size of the source 
-     * image, in the event that the original image has been rescaled.
-     *
-     * @param width Back-filled with the x extents of the 
-     * onscreen image (i.e. the image width in pixels)
-     * @param height Back-filled with the y extents of the 
-     * onscreen image (i.e. the image height in pixels)
-     */
-    void getImageSize (out long width, out long height);
-
-    /**
-     * \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    /** \endcond */
-  };
-};
diff --git a/idl/Accessibility_LoginHelper.idl b/idl/Accessibility_LoginHelper.idl
deleted file mode 100644 (file)
index 140aea2..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Bonobo_Unknown.idl>
-
-#ifndef _ACCESSIBILITY_LOGIN_HELPER_IDL_
-#define _ACCESSIBILITY_LOGIN_HELPER_IDL_
-
-module Accessibility {
-
-    /**
-     * @brief An interface for use by assistive technologies by which
-     * they can access system information and services on a 'need to know'
-     * basis while the screen is locked, during user authentication, or
-     * during other sensitive operations.
-     *
-     * This interface is intended for use by assistive technologies
-     * and related user-enabling services, and by applications and
-     * utilities which may wish to restrict access to certain system 
-     * devices and services during security-sensitive states, e.g. when 
-     * the screen is locked or during authentication into some secure
-     * service.
-     *
-     * Such 'applications' (for instance, screen lock dialogs and
-     * security-enabled web browsers) use the ::LoginHelper client
-     * interfaces, and the bonobo-activation query service, to
-     * query for assistive technologies which advertise the ::LoginHelper
-     * service.  The client then queries these assistive technologies 
-     * for their device I/O requirements, via the ::getDeviceReqs call.
-     * The client may then issue the advisory request ::setSafe (TRUE), 
-     * which requests that the ::LoginHelper -implementing service make a
-     * best-effort attempt to make itself more secure (for instance, 
-     * an onscreen keyboard might turn off word prediction, and a
-     * screenreader may turn off keyboard echo via speech).  The return
-     * value of ::setSafe is an advisory indication of whether this attempt
-     * was successful (no specific guarantees are implied).
-     * Once the 'security sensitive' state is exited, the client should 
-     * call ::setSafe (FALSE).
-     * 
-     * The return values from ::getDeviceReqs inform the client of which
-     * services the ::LoginHelper service (e. g. assistive technology) needs
-     * in order to do its job.  The client may use this information to
-     * loosen any restrictions on access which it may currently have in 
-     * place (for instance, keyboard grabs, etc.).  If it does not do so,
-     * the likely outcome is that the end-user will experience loss
-     * of access to the system.
-     *
-     **/
-  interface LoginHelper : Bonobo::Unknown {
-
-      /** 
-       * A structure containing info about toplevel X windows that
-       * the ::LoginHelper instance wishes to have raised.
-       *
-       * @param winID: The windowing-system-dependeny Window ID of the toplevel window.
-       */
-      struct WindowInfo {
-         /* string display; */
-         /* short screen; */
-         long winID;
-      };
-
-      typedef sequence<WindowInfo> WindowList;
-
-      /*
-       * DeviceReq:
-       *
-       * The system and device access and services which the LoginHelper-implementing 
-       * assistive technology requires in order to enable the user to use the system.
-       *
-       */
-      enum DeviceReq {
-         GUI_EVENTS, /*!<: Needs access to the GUI event subsystem (e.g. Xserver) */
-         CORE_KEYBOARD, /*!<: Needs access to the system keyboard events (read and write) */
-         CORE_POINTER, /*!<: Needs access to the onscreen pointer (e.g. mouse pointer) */
-                         EXT_INPUT, /*!<: Reads XInput extended input devices */
-         POST_WINDOWS, /*!<: Posts Windows, and needs for toplevel windows to be visible */
-         AUDIO_OUT, /*!<: Writes to audio device */
-         AUDIO_IN, /*!<: Reads from audio device */
-         NETWORK, /*!<: Requires access to general network services, including remote access */
-         LOCALHOST, /*!<: Requires network services hosted on LOCALHOST only */
-         SERIAL_OUT, /*!<: Writes to a serial port */
-         SERIAL_IN /*!<: Reads from a serial port */
-      };
-
-      typedef sequence<DeviceReq> DeviceReqList;
-
-       /**
-         * setSafe:
-        * @param safe_mode: \c TRUE if the client is requesting that 'safe mode' be 
-        *         initiated, \c FALSE if the client is advising that 'safe mode' may be
-        *         exited, i.e. normal operation may be resumed.
-         * 
-         * Request a LoginHelper to enter "safe" mode, or
-        *         inform LoginHelper that "safe" mode may be exited.
-        *         If \a safe_mode is \c TRUE, but the return value is \c FALSE,
-        *         the requesting client may wish to deny services to the 
-        *         ::LoginHelper, for instance avoid raising its toplevels.
-        *         The return value is purely advisory, and no guarantees are 
-        *         intended about what the implementing LoginHelper will do 
-        *         to improve security when in "safe" mode.
-        *
-         * @returns: whether the ::LoginHelper is now "safe" or not.
-        **/
-        boolean setSafe (in boolean safe_mode);
-
-       /**
-         * getDeviceReqs:
-         * 
-         * Query a ::LoginHelper for the types of
-        *    device I/O it requires, in order to do its job.
-        *    For instance, a ::LoginHelper which needs to receive keyboard
-        *    events will include 
-        *    Accessibility_LoginHelper_CORE_KEYBOARD in this list.
-        *
-         * @returns: A sequence of ::LoginHelper_DeviceReq indicating
-        *    the device I/O required in order to facilitate end-user access 
-        *    to the system.
-        **/
-        DeviceReqList getDeviceReqs ();
-
-       /**
-         * getRaiseWindows:
-         *
-         * Get a list of window IDs that need raising on login. 
-         *
-        * @returns: a sequence containing window IDS for toplevels which
-        *          need to be raised/made visible during user authentication, in
-        *          order for the ::LoginHelper to facilitate end-user access to the 
-        *          system.
-        **/
-        WindowList getRaiseWindows ();
-
-       /**
-        * \cond
-        * unImplemented:
-        *
-        * placeholders for future expansion.
-        */
-       void unImplemented ();
-       void unImplemented2 ();
-       void unImplemented3 ();
-       void unImplemented4 ();
-      /** \endcond */
-    };
-
-};
-
-#endif
diff --git a/idl/Accessibility_Registry.idl b/idl/Accessibility_Registry.idl
deleted file mode 100644 (file)
index 17d4a34..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility_Event.idl>
-#include <Accessibility_Application.idl>
-#include <Accessibility_Desktop.idl>
-
-#ifndef _ACCESSIBILITY_REGISTRY_IDL_
-#define _ACCESSIBILITY_REGISTRY_IDL_
-
-module Accessibility {
-
-  typedef sequence<Desktop> DesktopSeq;
-
-  interface DeviceEventController;
-
-    /** 
-     * The Registry is a service through which applications providing 
-     * accessibility services (servers) can rendezvous with consumers of those
-     * services (Assistive Technologies).  The Registry is the first "port of call" for 
-     * accessible applications and for assistive technologies wishing to query and
-     * interact with those applications.
-     *
-     * The Registry service provides four basic functions to Assistive Technology (AT) clients:
-     * \li it provides a list of the applications who have registered with the AT-SPI
-     * framework, thereby announcing their participation in the AT-SPI framework;
-     * \li it allows AT clients to register for notification of changes in application
-     * state (at-spi Events);
-     * \li it dispatches/relays said events from participating applications to
-     * the registered listeners;
-     * \li it gives access to system device events via the associated DeviceEventController
-     * interface.
-     *
-     * From the point of view of accessible applications (i.e. AT-SPI service producers), 
-     * the Registry is primarily a registration and event delivery service.  Applications 
-     * normally only call the registerApplication and deregisterApplication Registry methods,
-     * and its inherited EventListener::notifyEvent method.
-     *
-     * @note Although all application events are dispatched via the Registry, other AT client 
-     * calls are serviced directly by the applications, rather than being relayed via the
-     * Registry.  The AT client obtains references to these application objects
-     * via the enumeration of Desktop instances whose children are Application instances
-     * (Registry::getDesktopList) and via examination of the 'source' member of the Event 
-     * structure. 
-     *
-     * The Registry normally lives in its own process space; communication via Registry and
-     * both application services and AT clients takes place via IPC.  A process space diagram
-     * illustrating the relationship between applications, Registry, and AT is shown below.
-     * @image html "http://developer.gnome.org/projects/gap/tech-docs/SPIBlockDiagram.png"
-     * 
-     *
-     * @see Desktop, Application, Event, EventListener
-     **/
-  interface Registry : EventListener {
-
-       /**
-         * Register a new application with the accessibility broker.
-         * @param app: a reference to the requesting Application
-        **/
-        oneway void registerApplication (in Application app);
-
-       /**
-         * De-register an application previously registered with the broker.
-         * deregisterApplication:
-         * @param app: a reference to the Application 
-         * to be deregistered.
-        **/
-        void deregisterApplication (in Application app);
-
-       /**
-         * Register a client's interest in (all) application events of 
-         * a certain type.
-         * @param listener: a reference to the requesting ::EventListener.
-         * @param eventName: a string which indicates the type of events about 
-         * which the client desires notification.
-        **/
-        void registerGlobalEventListener (in EventListener listener,
-                                         in string eventName);
-
-       /**
-         * deregisterGlobalEventListenerAll:
-         * @param listener: the requesting EventListener
-         *
-         * Request that a previously registered client stop receiving
-         * global notifications for all events for which it was registered.
-         *
-        **/
-        void deregisterGlobalEventListenerAll (in EventListener listener);
-
-       /**
-         * deregisterGlobalEventListener:
-         * @param listener: the requesting EventListener
-         * @param eventName: a string indicating the type of events
-         *
-         * Request that a previously registered client stop receiving
-         * global notifications for events of a certain type.
-         *
-        **/
-        void deregisterGlobalEventListener (in EventListener listener, 
-                                           in string eventName);
-        /** 
-         * event types: "Window" "Desktop"
-         *              "Window:Create" "Window:Destroy"
-         *              "Window:Iconify" "Window:Restore"
-         *              "Window:Fullscreen" "Window:Resize"
-         *              "Desktop:Create" "Desktop:Destroy"  
-         *              "Desktop:Focus" "Desktop:Defocus"
-         *              "Desktop:Reorder" 
-         *              "Focus"
-         *              "GtkWidget:show"
-         *              "GObject:notify:<propertyname>" 
-         *
-         *  ( not sure we should allow these last 2 forms, 
-         *    since they are toolkit-specific, but they're powerful )
-         *
-         **/              
-
-       /**
-         * getDesktopCount:
-         *
-         * Get the current number of desktops.
-        * @returns a short integer indicating the current number of 
-         * Desktops.
-        **/
-        short getDesktopCount ();
-
-       /**
-         * getDesktop:
-         * @n: the index of the requested Desktop.
-         *
-         * Get the nth accessible desktop. 
-         *
-        * @returns a reference to the requested Desktop.
-        **/
-        Desktop getDesktop (in short n);
-
-       /**
-         * Get a list of accessible desktops. 
-         *
-        * @returns: a sequence containing references to
-         * the Desktops.
-        **/
-        DesktopSeq getDesktopList ();
-
-       /**
-         * Obtain an object which can be used to request device event notifications.
-         *
-        * @returns: an object implementing DeviceEventController
-        **/
-        DeviceEventController getDeviceEventController ();
-
-       /** \cond
-        * unImplemented:
-        *
-        * placeholders for future expansion.
-        */
-       void unImplemented ();
-       void unImplemented2 ();
-       void unImplemented3 ();
-       void unImplemented4 ();
-       void unImplemented5 ();
-       void unImplemented6 ();
-      /** \endcond */
-    };
-
-    /** Deprecated, DO NOT USE! */
-  enum KeyEventType {
-    KEY_PRESSED,
-    KEY_RELEASED
-  };
-
-  /** Used to specify the event types of interest to an EventListener, or
-   * to identify the type of an event for which notification has been sent. 
-   * @see EventTypeSeq, DeviceEvent::type
-   */
-  enum EventType {
-      KEY_PRESSED_EVENT, /**< key on a keyboard device was pressed. */
-      KEY_RELEASED_EVENT, /**< key on a keyboard device was released. */
-      BUTTON_PRESSED_EVENT,/**< button on a non-keyboard human interface device 
-                           * (HID) was pressed */
-      BUTTON_RELEASED_EVENT /**< button on a non-keyboard human interface device 
-                            * (HID) was pressed */
-  };
-
-    /** Used when synthesizing keyboard input via DeviceEventController:generateKeyboardEvent.*/
-  enum KeySynthType {
-    KEY_PRESS,/** emulate the pressing of a hardware keyboard key. */
-    KEY_RELEASE,/** emulate the release of a hardware keyboard key. */
-    KEY_PRESSRELEASE,/** a hardware keyboard key is pressed and immediately released. */
-    KEY_SYM,/** a symbolic key event is generated, without specifying a hardware key. 
-            * @note if the keysym is not present in the current keyboard map,
-            * the DeviceEventController 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 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.
-            */
-    KEY_STRING /** a string is converted to its equivalent keyboard events and emitted. 
-               * If the string consists of complex character or composed characters
-               * which are not in the current keymap, string emission is subject to the
-               * out-of-keymap limitations described for KeySynthType::KEY_SYM.
-               * In practice this limitation primarily effects Chinese and Japanese locales.
-               */
-  };
-
-  enum ModifierType {
-    MODIFIER_SHIFT, /** The left or right 'Shift' key */
-    MODIFIER_SHIFTLOCK, /** The ShiftLock or CapsLock key */
-    MODIFIER_CONTROL,/** 'Control'/'Ctrl' */
-    MODIFIER_ALT,/** The Alt key (as opposed to AltGr) */
-    MODIFIER_META,/** 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
-                  * ModifierType::MODIFIER_META2 means that the 'Mod2Mask' bit is
-                  * set in the corresponding XEvent.
-                  */
-    MODIFIER_META2,
-    MODIFIER_META3,
-    MODIFIER_NUMLOCK/** A symbolic meta key name that is mapped by AT-SPI to the 
-                    *  appropriate META value, for the convenience of the client.
-                    */
-  };
-
-  /** A structure that encapsulates the characteristics of the event notifications
-   * that should be sent to an EventListener in response to a call to
-   * DeviceEventController::registerKeystrokeListener or 
-   * DeviceEventController::registerDeviceEventListener. */
-  struct EventListenerMode {
-    boolean synchronous; /**< If \c True, specifies that
-                         * DeviceEventController should block while waiting 
-                         * for client to process the requested event notifications; 
-                         * ordinarily should be used only when client needs to perform
-                         * operations synchronously with event delivery. Note that because
-                         * of the architecture of device event systems in general,
-                         * use of this flag may not block delivery of the event to 
-                         * the currently focussed application unless it is used in 
-                         * conjunction with the preemptive flag. */
-    boolean preemptive; /**< If \c True, specifies that 
-                        * Listener is allowed to pre-empt the delivery of the event,
-                        * effectively "consuming" it such that it is not delivered 
-                        * to the currently focussed desktop application. 
-                        * Key events consumed via this API will not be 
-                        * available for use by other applications or services, so this
-                        * option should be used sparingly. */
-    boolean global; /**< If \c True, specifies that
-                    * Event notifications should be sent regardless of whether the
-                    * currently focussed application participates in the AT-SPI 
-                    * infrastructure.  On systems with the XEvIE X extension, this flag
-                    * also allows access to events which are already subject to 
-                    * interception via a "system keygrab" (as described in the X Window System
-                    * documentation for XGrabKey).  The 'global' and 'preemptive' flags
-                    * should only be used together for the purposes of registering
-                    * "system global key shortcuts" i.e. command keys for use by the
-                    * assistive technology. */
-  };
-
-  /** 
-   * an unsigned short int consisting of zero or more of the following
-   * values OR'ed together:
-   *
-   * \li \c 1<<::KEY_PRESSED_EVENT  = 1
-   * \li \c 1<<::KEY_RELEASED_EVENT = 2
-   * \li \c 1<<::BUTTON_PRESSED_EVENT = 3,
-   * \li \c 1<<::BUTTON_RELEASED_EVENT = 4
-   **/
-  typedef unsigned long ControllerEventMask;
-
-  /** A structure which encapsulates information about a device event. */
-  struct DeviceEvent {
-    EventType type; /**< Identifies the type of the containing DeviceEvent. */
-    long  id; /**< an identifier which identifies this event in the event stream. 
-              * On X Window systems this corresponds to the XEvent serial number.
-              */
-    short hw_code; /**< a numeric code which is hardware and system-dependent, identifying the
-                   * specific hardware button or key on the device for which the event has
-                   * occurred. On X Window systems, for global key notifications and for most
-                   * non-global key notifications as well, this code corresponds to the
-                   * XKeycode.  For switch and button events it indicates the switch
-                   * or button number.
-                   * @note
-                   * For technical reasons, this code may differ from the XKeycode
-                   * when generated by Java applications for consumption by non-global
-                   * key listeners.  This is subject to change in future versions of the
-                   * DeviceEventController implementation.
-                   */
-
-    unsigned short modifiers; /**< an unsigned short int consisting of zero or more of the following
-                              * values OR'ed together:
-                              * \li \c 1<<::MODIFIER_SHIFT   (=1, corresponds to Xlib's ShiftMask)
-                              * \li \c 1<<::MODIFIER_SHIFTLOCK    (=2, corresponds to Xlib's LockMask)
-                              * \li \c 1<<::MODIFIER_CONTROL (=4, corresponds to Xlib's ControlMask)
-                              * \li \c 1<<::MODIFIER_ALT    (=8, corresponds to Xlib's Mod1Mask)
-                              * \li \c 1<<::MODIFIER_META    (=16, corresponds to Xlib's Mod2Mask)
-                              * \li \c 1<<::MODIFIER_META2    (=32, corresponds to Xlib's Mod3Mask)
-                              * \li \c 1<<::MODIFIER_META3    (=64, corresponds to Xlib's Mod4Mask)
-                              **/
-    unsigned long timestamp; /**< an unsigned integer representing the time that the 
-                             * event occurred.  On X Window systems this event is 
-                             * a time in milliseconds from some arbitrary starting
-                             * point; it therefore has a cycle time of approximately
-                             * 50 days.
-                             */
-    string event_string; /**< A string representation of the event.  If is_text is
-                         * \c True, then this string represents the character or typographic
-                         * sequence that would be received by a focussed text input field.
-                         * event_string is in general suitable for exposure to the
-                         * end-user for purposes of keyboard echo.
-                         */
-    boolean is_text; /**< \c True if the event results in the insertion of characters 
-                     * into an input text buffer, or would do so if delivered to a focussed
-                     * text input field. ¨Typographical¨ key events have this field set to
-                     * \c True, whereas ¨control¨ key events generally do not.
-                     */
-  };
-
-  /** 
-   * A structure which defines the identity of a key for which notifications
-   * are to be requested.  The data in the members of a ::KeyDefinition are used to
-   * determine which keyboard events 'match' the notification request filed by a client.
-   *
-   * @note Ordinarily a KeyDefinition specifies one and only one of the criteria below; 
-   * the result of using a KeyDefinition with multiple members defined as nonzero is
-   * undefined.
-   *
-   * @param keycode if nonzero, the numeric, system-dependent value corresponding to a 
-   * physical key on the keyboard.  Keycode values have no semantic meaning to the end-user,
-   * and may depend on the user's hardware and operating environment.  They therefore are
-   * rarely useful "as-is" to AT clients, unless the client has used operating system
-   * services to identify the hardward keycode associated with a particular key symbol.
-   * Notifications for key events requested by keycode are less dependent on modifier state
-   * than \c keysym based notifications, but some hardware (notably many laptops) may generate
-   * more than one keycode for the same physical key, depending on the state of physical 
-   * shift/modifier keys.
-   * @param keysym if nonzero, the numeric value corresponding to the X Keysym of the key for which 
-   * notification is requested.  Note that the presence of active modifiers will affect
-   * whether notification for key events requested via "keysym" specification takes place, 
-   * since the keysym depends on the modifier state for most keys.
-   * @param keystring if non-NULL, the string value of the inserted characters if the corresponding
-   * key event has ::KeyEvent:is_text set to \c True, or the string representing the
-   * 'name' of the key.  On X11 systems, the string 'name' of non-printing keysyms corresponds
-   * to the values in "keysymdef.h" as provided by Xlib, with the leading "XK_" stripped off.
-   **/
-  struct KeyDefinition {
-    long keycode;
-    long keysym;
-    string keystring;
-    long unused;
-  };   
-
-  typedef sequence< KeyDefinition > KeySet;
-  typedef sequence< EventType > KeyEventTypeSeq;
-  typedef sequence< EventType > EventTypeSeq;
-
-  /** This interface should be implemented by AT-SPI clients who wish to 
-   * make use of the DeviceEventController to receive device event notifications.
-   * DeviceEvents include keyboard events and mouse button/motion events.
-   **/
-  interface DeviceEventListener : Bonobo::Unknown {
-      /** Notify an interested DeviceEventListener that a DeviceEvent has occurred.
-       * @returns \c True if the recipient/consumer wishes to consume the event, i.e.
-       * prevent it from being delivered to the desktop, \c False if the event should 
-       * continue to be delivered as normal.
-       */
-        boolean notifyEvent (in DeviceEvent event);
-      /** \cond */
-        void    unImplemented__ ();
-        void    unImplemented_2_ ();
-        void    unImplemented_3_ ();
-        void    unImplemented_4_ ();
-        void    unImplemented_5_ ();
-        void    unImplemented_6_ ();
-      /** \endcond */
-  };
-
-  /** 
-   * The interface via which clients request notification of device events, and
-   * through which device events may be simulated.
-   ***/
-  interface DeviceEventController : Bonobo::Unknown {
-
-       /**
-         * Register to intercept keyboard events, and either pass them on or
-         * consume them. 
-         *
-         * @param listener: a DeviceEventListener which will intercept key events.
-         * @param keys:     a KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
-         * @param mask:     a ControllerEventMask filtering the intercepted key events.
-        * @param type:     a KeyEventTypeSeq that may created by ORing event types together.
-        * @param mode: an EventListenerMode indicating whether the listener should 
-        *            receive the events synchronously, potentially consuming them,
-        *            or just be notified asynchronously of those events that have
-        *            been generated.
-        * @note Some platforms have limited support for global, preemptive EventListenerMode.
-        * Such a registration may fail if another client already has priority for preemptive
-        * access to one or more of the members of the KeySet.  AT consumers have the option
-        * of re-trying the request without the global flag, or without the preemptive flag,
-        * or of re-trying with a different KeySet.  The best support for pre-emptive
-        * global keyboard listeners is provided on platforms whose Xserver implementation
-        * provides the XEvIE extension.
-        *
-        * @returns \c True if the DeviceEventListener was successfully registered
-        * for the requested KeySet, ControllerEventMask, event types, and EventListenerMode; 
-        * otherwise returns \c False.
-        **/
-        boolean registerKeystrokeListener (in DeviceEventListener listener,
-                                       in KeySet keys,
-                                       in ControllerEventMask mask,
-                                       in KeyEventTypeSeq type,
-                                       in EventListenerMode mode);
-    
-       /**
-         * De-register a previously registered keyboard eventlistener.
-         * @param listener: a DeviceEventListener which will intercept key events.
-         * @param keys:     a KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
-         * @param mask:     a ControllerEventMask filtering the intercepted key events.
-        * @param type:     an EventType mask that may created by ORing event types together.
-        **/
-        void deregisterKeystrokeListener (in DeviceEventListener listener,
-                                         in KeySet keys,
-                                         in ControllerEventMask mask,
-                                         in KeyEventTypeSeq type);
-    
-       /**
-         * Register to intercept events, and either pass them on or
-         * consume them. To listen to keyboard events use registerKeystrokeListener
-        * instead.
-         * @param listener: a DeviceEventListener which will intercept events.
-        * @param typeseq:  an EventTypeSeq indicating which event types to listen for.
-        * @returns \c True if successful, \c False if not
-        **/
-        boolean registerDeviceEventListener (in DeviceEventListener listener,
-                                            in EventTypeSeq typeseq);
-    
-       /**
-         * De-register a previously registered keyboard eventlistener.
-         * @param listener: a DeviceEventListener which will intercept events.
-        * @param typeseq:  an EventTypeSeq indicating which event types to stop
-        *            listening for.
-        **/
-        void deregisterDeviceEventListener (in DeviceEventListener listener,
-                                           in EventTypeSeq typeseq);
-    
-      /** 
-       * Notify the Registry instance that a device event has taken place, and
-       *       allow pre-emptive listeners the opportunity to 'consume' the event
-       *       and thus prevent its further issuance/forwarding.  This is the 
-       *       method used by accessibility bridges to forward "toolkit dependent"
-       *       device events to the Registry from the application's process space.
-       *
-       * @note AT clients do not normally need to use this method, it is intended for use
-       *       by toolkit bridges and special-purpose applications.
-       *
-       * @returns \c True if the event was consumed by a (pre-emptive) listener,
-       *          \c False if not (in which case the device event will be forwarded
-       *          as normal to any application which would normally receive it, e.g.
-       *          the currently active application in the case of mouse or keyboard events).
-       **/
-        boolean notifyListenersSync (in DeviceEvent event);
-
-      /** 
-       * Notify the Registry instance that a device event has taken place in
-       *       an asynchronous manner.  This is the 
-       *       method used by accessibility bridges to forward "toolkit dependent"
-       *       device events to the Registry from the application's process space.
-       *       If the event in question is potentially pre-emptible.
-       *       ::notifyListenersSync should be used instead.
-       *
-       * @note AT clients do not normally need to use this method, it is intended for use
-       *       by toolkit bridges and special-purpose applications.
-       **/
-        oneway void notifyListenersAsync (in DeviceEvent event);
-
-        /**
-         * Synthesize a keyboard event.
-         * @param keycode: a long integer indicating the keycode of
-        *          the keypress to be synthesized.
-        * @param keystring: an optional UTF-8 string indicating a complex
-        *          keyboard input event.
-        * @param type: a KeySynthType indicating the type of event(s) to be 
-        *          synthesized: a key press, release, press-release pair,
-        *          or a complex input string (for instance from an
-        *          internationalized or complex text input method, or
-        *          a composed character).
-        *
-        * @note keycode may be truncated before being
-        *          processed, as keycode length may be platform-dependent
-        *          and keycode ranges are generally much smaller than
-        *          CORBA_long. 
-        * One or the other of keycode or keystring are generally NULL, 
-        *          (but not both), depending on the value of \c type.
-        *
-         **/
-         void generateKeyboardEvent (in long keycode, 
-                                    in string keystring, 
-                                    in KeySynthType type);
-
-        /**
-         * Synthesize a mouse event.
-         * @param x: a long integer indicating the screen x coord for the mouse event.
-         * @param y: a long integer indicating the screen y coord for the mouse event.
-         * @param eventName: a string indicating the type of mouse event, e.g. "button1up"
-         **/
-         void generateMouseEvent (in long x, in long y, in string eventName);
-
-        /** \cond
-         * unImplemented:
-         *
-         * placeholders for future expansion.
-         */
-        void unImplemented ();
-        void unImplemented2 ();
-        void unImplemented3 ();
-        void unImplemented4 ();
-      /** \endcond */
-    }; 
-};
-
-#endif
diff --git a/idl/Accessibility_Relation.idl b/idl/Accessibility_Relation.idl
deleted file mode 100644 (file)
index 1f81b48..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ACCESSIBILITY_RELATION_IDL
-#define _ACCESSIBILITY_RELATION_IDL
-
-module Accessibility {
-
-    /** 
-     * RelationType 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 RELATION_LABELLED_BY relationship may be used to identify labelling information
-     * that should accompany the accessibleName property when presenting an object's content or identity
-     * to the end user.  Similarly, 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.
-     */
-  enum RelationType {
-    /** Not a meaningful relationship; clients should not normally encounter this RelationType value. */
-    RELATION_NULL,
-    /** Object is a label for one or more other objects. */
-    RELATION_LABEL_FOR,
-    /** Object is labelled by one or more other objects. */
-    RELATION_LABELLED_BY,
-    /** Object is an interactive object which modifies the state, onscreen location, or other attributes
-     * of one or more target objects. */
-    RELATION_CONTROLLER_FOR,
-    /** 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 CONTROLLED_BY scrollbars. */
-    RELATION_CONTROLLED_BY,
-    /** Object has a grouping relationship (e.g. ¨same group as¨) to one or more other objects.  */
-    RELATION_MEMBER_OF,
-    /** Object is a tooltip associated with another object. */
-    RELATION_TOOLTIP_FOR,
-    /** Reserved for future use. */
-    RELATION_NODE_CHILD_OF,
-    /** Used to indicate that a relationship exists, but its type is not specified in the enumeration
-     * and must be obtained via a call to getRelationTypeName.  */
-    RELATION_EXTENDED,
-    /** 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. */
-    RELATION_FLOWS_TO,
-    /** Reciprocal of RELATION_FLOWS_TO. */
-    RELATION_FLOWS_FROM,
-    /** 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.  */
-    RELATION_SUBWINDOW_OF,
-    /** Similar to SUBWINDOW_OF, but specifically used for cross-process embedding.  */
-    RELATION_EMBEDS,
-    /** Reciprocal of RELATION_EMBEDS; Used to denote content rendered by embedded renderers that
-     * live in a separate process space from the embedding context.  */
-    RELATION_EMBEDDED_BY,
-    /** Denotes that the object is a transient window or frame associated with another onscreen object.
-     * Similar to 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 a ROLE_WINDOW object with the POPUP_FOR relation
-     * usually requires some presentation action on the part of assistive technology clients, even though
-     * the previous toplevel ROLE_FRAME object may still be the active window.  */
-    RELATION_POPUP_FOR,
-    /** This is the reciprocal relation to RELATION_POPUP_FOR. */
-    RELATION_PARENT_WINDOW_OF,
-    /** Indicates that an object provides descriptive information 
-     * about another object; more verbose than RELATION_LABEL_FOR. */
-    RELATION_DESCRIPTION_FOR, 
-    /** Indicates that another object provides descriptive information 
-     * about this object; more verbose than RELATION_LABELLED_BY. */
-    RELATION_DESCRIBED_BY,
-    /** Do not use as a parameter value, used to determine the size of the enumeration. */
-    RELATION_LAST_DEFINED
-  };
-
-  /** 
-   * An interface via which objects' non-hierarchical relationships to one another 
-   * are indicated.  An instance of Relations represents a "one-to-many" correspondance.
-   *
-   * @note This interface inherits from a base class implementing ref counts.
-   */
-  interface Relation : Bonobo::Unknown {
-
-    /** @returns the RelationType of this Relation. */
-    RelationType        getRelationType ();
-
-    /** @returns an unlocalized string representing the relation type. */
-    string              getRelationTypeName ();
-
-    /** @returns the number of objects to which this relationship applies. */
-    short               getNTargets ();
-
-    /** @returns an Object which is the 'nth'target of this Relation, e.g. the Object at index i
-     * in the list of Objects having the specified relationship to this Accessible.  
-     * \note This target should always implement Accessible, though it is returned as an Object.
-     * (In this respect this method is probably ill-specified.)
-     **/
-    Object             getTarget (in short index);
-
-    /** \cond placeholders for future expansion */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-    /** \endcond */
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_Role.idl b/idl/Accessibility_Role.idl
deleted file mode 100644 (file)
index fc962c6..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ACCESSIBILITY_ROLE_IDL
-#define _ACCESSIBILITY_ROLE_IDL
-
-module Accessibility {
-
-  enum Role {
-  /** A Role indicating an error condition, such as uninitialized Role data. */
-  ROLE_INVALID,
-  /** Object is a label indicating the keyboard accelerators for the parent  */
-  ROLE_ACCELERATOR_LABEL,
-  /** Object is used to alert the user about something */
-  ROLE_ALERT,
-  /** Object contains a dynamic or moving image of some kind */
-  ROLE_ANIMATION,
-  /** Object is a 2d directional indicator */
-  ROLE_ARROW,
-  /** Object contains one or more dates, usually arranged into a 2d list */
-  ROLE_CALENDAR,
-  /** Object that can be drawn into and is used to trap events */
-  ROLE_CANVAS,
-  /**
-   * A choice that can be checked or unchecked and provides a separate
-   * indicator for the current state.
-   */
-  ROLE_CHECK_BOX,
-  /** A menu item that behaves like a check box (see ROLE_CHECK_BOX) */
-  ROLE_CHECK_MENU_ITEM,
-  /** A specialized dialog that lets the user choose a color. */
-  ROLE_COLOR_CHOOSER,
-  /** The header for a column of data */
-  ROLE_COLUMN_HEADER,
-  /** A list of choices the user can select from */
-  ROLE_COMBO_BOX,
-  /** An object which allows entry of a date */
-  ROLE_DATE_EDITOR,
-  /** An inconifed internal frame within a DESKTOP_PANE */
-  ROLE_DESKTOP_ICON,
-  /**
-   * A pane that supports internal frames and iconified versions of those
-   * internal frames.
-   */
-  ROLE_DESKTOP_FRAME,
-  /** 
-   * An object that allows a value to be changed via rotating a visual element,
-   * or which displays a value via such a rotating element. 
-   */
-  ROLE_DIAL,
-  /** A top level window with title bar and a border */
-  ROLE_DIALOG,
-  /**
-   * A pane that allows the user to navigate through and select the contents
-   * of a directory
-   */
-  ROLE_DIRECTORY_PANE,
-  /**
-   * 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.
-   */
-  ROLE_DRAWING_AREA,
-  /**
-   * An object used for drawing custom user interface elements.
-   */
-  ROLE_FILE_CHOOSER,
-  /**
-   * A object that fills up space in a user interface
-   */
-  ROLE_FILLER,
-  /** XXX Don't use, reserved for future use. */
-  ROLE_FOCUS_TRAVERSABLE,
-  /** Allows selection of a display font */
-  ROLE_FONT_CHOOSER,
-  /** A top level window with a title bar, border, menubar, etc. */
-  ROLE_FRAME,
-  /** A pane that is guaranteed to be painted on top of all panes beneath it */
-  ROLE_GLASS_PANE,
-  /**
-   * A document container for HTML, whose children
-   * represent the document content.
-   */
-  ROLE_HTML_CONTAINER,
-  /** A small fixed size picture, typically used to decorate components */
-  ROLE_ICON,
-  /** An image, typically static. */
-  ROLE_IMAGE,
-  /** A frame-like object that is clipped by a desktop pane. */
-  ROLE_INTERNAL_FRAME,
-  /** An object used to present an icon or short string in an interface */
-  ROLE_LABEL,
-  /**
-   * A specialized pane that allows its children to be drawn in layers,
-   * providing a form of stacking order.
-   */
-  ROLE_LAYERED_PANE,
-  /**
-   * An object that presents a list of objects to the user and allows the
-   * user to select one or more of them.
-   */
-  ROLE_LIST,
-  /** An object that represents an element of a list. */
-  ROLE_LIST_ITEM,
-  /**
-   * An object usually found inside a menu bar that contains a list of
-   * actions the user can choose from.
-   */
-  ROLE_MENU,
-  /**
-   * 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.
-   */
-  ROLE_MENU_BAR,
-  /**
-   * An object usually contained in a menu that presents an action the
-   * user can choose.
-   */
-  ROLE_MENU_ITEM,
-  /** A specialized pane whose primary use is inside a DIALOG */
-  ROLE_OPTION_PANE,
-  /** An object that is a child of a page tab list */
-  ROLE_PAGE_TAB,
-  /**
-   * An object that presents a series of panels (or page tabs), one at a time,
-   * through some mechanism provided by the object.
-   */
-  ROLE_PAGE_TAB_LIST,
-  /** A generic container that is often used to group objects. */
-  ROLE_PANEL,
-  /**
-   * A text object uses for passwords, or other places where the text
-   * content is not shown visibly to the user.
-   */
-  ROLE_PASSWORD_TEXT,
-  /**
-   * 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.
-   */
-  ROLE_POPUP_MENU,
-  /** An object used to indicate how much of a task has been completed. */
-  ROLE_PROGRESS_BAR,
-  /**
-   * An object the user can manipulate to tell the application to do
-   * something.
-   */
-  ROLE_PUSH_BUTTON,
-  /**
-   * A specialized check box that will cause other radio buttons in the
-   * same group to become uncghecked when this one is checked.
-   */
-  ROLE_RADIO_BUTTON,
-  /** Object is both a menu item and a "radio button" (see ROLE_RADIO_BUTTON) */
-  ROLE_RADIO_MENU_ITEM,
-  /**
-   * A specialized pane that has a glass pane and a layered pane as its
-   * children.
-   */
-  ROLE_ROOT_PANE,
-  /** The header for a row of data */
-  ROLE_ROW_HEADER,
-  /**
-   * 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.
-   */
-  ROLE_SCROLL_BAR,
-  /**
-   * An object that allows a user to incrementally view a large amount
-   * of information.  ROLE_SCROLL_PANE objects are usually accompanied by
-   * ROLE_SCROLL_BAR controllers, on which the RELATION_CONTROLLER_FOR and
-   * RELATION_CONTROLLED_BY reciprocal relations are set; \see 
-   * Accessibility::RelationSet.
-   */
-  ROLE_SCROLL_PANE,
-  /**
-   * An object usually contained in a menu to provide a visible and
-   * logical separation of the contents in a menu.
-   */
-  ROLE_SEPARATOR,
-  /** An object that allows the user to select from a bounded range */
-  ROLE_SLIDER,
-  /** 
-   * An object which allows one of a set of choices to be selected, 
-   * and which displays the current choice.  Unlike ROLE_SCROLL_BAR,
-   * ROLE_SLIDER objects need not control 'viewport'-like objects.
-   */
-  ROLE_SPIN_BUTTON,
-  /** A specialized panel that presents two other panels at the same time. */
-  ROLE_SPLIT_PANE,
-  /** Object displays non-quantitative status information (c.f. ROLE_PROGRESS_BAR) */
-  ROLE_STATUS_BAR,
-  /** An object used to repesent information in terms of rows and columns. */
-  ROLE_TABLE,
-  /** A 'cell' or discrete child within a Table. \note Table cells need not have ROLE_TABLE_CELL, 
-   * other RoleType values are valid as well.  */
-  ROLE_TABLE_CELL,
-  /** An object which labels a particular column in a Table. */
-  ROLE_TABLE_COLUMN_HEADER,
-  /** An object which labels a particular row in a Table. Table rows and columns may also be 
-   * labelled via the RELATION_LABEL_FOR/RELATION_LABELLED_BY relationships; 
-   * \see Accessibility::RelationSet. */
-  ROLE_TABLE_ROW_HEADER,
-  /** Object allows menu to be removed from menubar and shown in its own window. */
-  ROLE_TEAROFF_MENU_ITEM,
-  /** An object that emulates a terminal */
-  ROLE_TERMINAL,
-  /** An object that presents text to the user, of nonspecific type. */
-  ROLE_TEXT,
-  /**
-   * A specialized push button that can be checked or unchecked, but does
-   * not procide a separate indicator for the current state.
-   */
-  ROLE_TOGGLE_BUTTON,
-  /**
-   * A bar or palette usually composed of push buttons or toggle buttons
-   */
-  ROLE_TOOL_BAR,
-  /**
-   * An object that provides information about another object
-   */
-  ROLE_TOOL_TIP,
-  /** An object used to repsent hierarchical information to the user. */
-  ROLE_TREE,
-  /** An object that presents both tabular and hierarchical info to the user */
-  ROLE_TREE_TABLE,
-  /**
-   * The object contains some Accessible information, but its role is
-   * not known.  
-   */
-  ROLE_UNKNOWN,
-  /** An object usually used in a scroll pane, or to otherwise clip a larger object or 
-   * content renderer to a specific onscreen viewport. */
-  ROLE_VIEWPORT,
-  /** A ¨top level window¨ with no title or border. */
-  ROLE_WINDOW,
-  /** 
-   * means that the role for this item is known, but not included in the 
-   * core enumeration 
-   */
-  ROLE_EXTENDED,
-  /** An object that serves as a document header. */
-  ROLE_HEADER,
-  /** An object that serves as a document footer. */
-  ROLE_FOOTER,
-  /** An object which is contains a single paragraph of text content. \see also ROLE_TEXT. */
-  ROLE_PARAGRAPH,
-  /**
-   * An object which describes margins and tab stops, etc. 
-   * for text objects which it controls 
-   * (should have CONTROLLER_FOR relation to such). 
-   */
-  ROLE_RULER,
-  /**
-   * An object corresponding to the toplevel accessible of an 
-   * application, which may contain ROLE_FRAME objects or other
-   * accessible objects.  Children of AccessibleDesktop objects 
-   * are generally ROLE_APPLICATION objects.
-   */
-  ROLE_APPLICATION,
-  /**
-   * 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.
-   */
-  ROLE_AUTOCOMPLETE,
-  /**
-   * The object is an editable text object in a toolbar.
-   */
-  ROLE_EDITBAR,
-  /**
-   * 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.
-   */
-  ROLE_EMBEDDED,
-
-  /**
-   * The object is a component whose textual content may be entered or modified by the user,
-   * provided STATE_EDITABLE is present.  
-   * @note a readonly ROLE_ENTRY object (i.e. where STATE_EDITABLE is not present) implies a
-   * read-only ¨text field¨ in a form, as opposed to a title, label, or caption.
-   *
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_ENTRY,
-  /**
-   * 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 LABELLED_BY relation is particularly important in interpreting objects of this type,
-   * as is the accessible-description property.  
-   * @see ROLE_CAPTION
-   *
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_CHART,
-  /**
-   * The object contains descriptive information, usually textual, about another user interface
-   * element such as a table, chart, or image.
-   *
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_CAPTION,
-  /**
-   * The object is a visual frame or container which contains a view of document content.  
-   * Document frames may occur within another Document instance, in which case the second 
-   * document may be said to be embedded in the containing instance.  HTML frames are
-   * often ROLE_DOCUMENT_FRAME.  Either this object, or a singleton descendant, should implement
-   * the Document interface.
-   *
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_DOCUMENT_FRAME,
-  /**
-   * 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. 
-   *
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_HEADING,
-  /**
-   * The object is a containing instance which encapsulates a page of 
-   * information.  ROLE_PAGE is used in documents and content which support
-   * a paginated navigation model.
-   * 
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_PAGE,
-  /**
-   * 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.
-   *
-   * @since AT-SPI 1.7.0
-   */
-  ROLE_SECTION,
-  /**
-   * 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. 
-   *
-   * @since AT-SPI 1.7.6
-   */
-  ROLE_REDUNDANT_OBJECT,
-  /**
-   * 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.
-   * 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, ROLE_FORM containers' components are associated with
-   * the current document, rather than the current foreground application or
-   * viewer instance.
-   *
-   * @since AT-SPI 1.7.6
-   */
-  ROLE_FORM,
-  /**
-   * 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 Hypertext/Hyperlink interfaces
-   * to indicate the range/location within a text object where
-   * an inline or embedded object lies.
-   *
-   * @since AT-SPI 1.7.6
-   */
-  ROLE_LINK,
-  /**
-   * 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."
-   *
-   * @since AT-SPI 1.7.6
-   */
-  ROLE_INPUT_METHOD_WINDOW,
-
-  /** not a valid role, used for finding end of enumeration. */
-  ROLE_LAST_DEFINED
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_Selection.idl b/idl/Accessibility_Selection.idl
deleted file mode 100644 (file)
index aa4180b..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility_Accessible.idl>
-
-module Accessibility {
-
-  /** 
-   * An interface which indicates that an object exposes a 'selection' model,
-   * allowing the selection of one or more of its children.  Read-only Selection
-   * instances are possible, in which case the interface is used to programmatically
-   * determine the selected-ness of its children.  A selected child has ::State::STATE_SELECTED,
-   * and a child which may hypothetically be selected (though possibly not programmatically
-   * selectable) has ::State::STATE_SELECTABLE.
-   * @note Events emitted by implementors of Selection include:
-   * \li \c "object:selection-changed" An instance of Selection has undergone a change in the
-   *                                  'selected-ness' of its children, i.e. had a selection added,
-   *                                  removed, and/or modified.  Usually accompanied by
-   *                                  corresponding \c "object:state-changed:selected" events
-   *                                  from the corresponding children, unless the children are
-   *                                  previously un-queried via AT-SPI and the Selection instance
-   *                                  has ::State::STATE_MANAGES_DESCENDANTS.
-   **/
-  interface Selection : Bonobo::Unknown {
-    /**
-     * The number of children of a Selection implementor which are
-     *        currently selected.
-     */
-    readonly attribute long nSelectedChildren;
-    /**
-     * Get the i-th selected Accessible child of a Selection.
-     * @note \c selectedChildIndex refers to the index in the list of 
-     * 'selected' children as opposed to the more general 'child index'
-     * of an object;  as such it generally differs from that used in
-     * Accessible::getChildAtIndex() or returned by
-     * Accessible::getIndexInParent(). 
-     * \c selectedChildIndex must lie between 0
-     * and Selection::nSelectedChildren-1, inclusive.
-     * @param selectedChildIndex: a long integer indicating which of the 
-     * selected children of an object is being requested.
-     * @returns a pointer to a selected Accessible child object,
-     *          specified by \c selectedChildIndex.
-     */
-    Accessible getSelectedChild (in long selectedChildIndex);
-   /**
-    * Add a child to the selected children list of a Selection.
-    * @note For Selection implementors that only allow
-    *       single selections, this call may result in the
-    *       replacement of the (single) current
-    *       selection.  The call may return \c False if
-    *       the child is not selectable (i.e. does not have ::State::STATE_SELECTABLE), 
-    *       if the user does not have permission to change the selection, 
-    *       or if the Selection instance does not have ::State::STATE_SENSITIVE.
-    *
-    * @param childIndex: a long integer indicating which child of the
-    *              Selection is to be selected.
-    *
-    * @returns \c True if the child was successfully selected, 
-    *          \c False otherwise.
-    */
-    boolean selectChild (in long childIndex);
-   /**
-    * Remove a child to the selected children list of a Selection.
-    * @note \c childIndex is the index in the selected-children list,
-    *       not the index in the parent container.  \c selectedChildIndex in this
-    *       method, and \c childIndex in Selection::selectChild
-    *       are asymmettric.
-    *
-    * @param selectedChildIndex: a long integer indicating which of the 
-    *         selected children of the Selection is to be deselected.  The index
-    *         is a zero-offset index into the 'selected child list', not
-    *         a zero-offset index into the list of all children of the Selection.
-    *
-    * @returns \c True if the child was successfully deselected, 
-    *          \c False otherwise.
-    *
-    * @see deselectChild
-    **/    
-    boolean deselectSelectedChild (in long selectedChildIndex);
-   /**
-    * Determine whether a particular child of an Selection implementor
-    *        is currently selected.  Note that \c childIndex is the zero-offset
-    *        index into the standard Accessible container's list of children.
-    *
-    * @param childIndex: an index into the Selection's list of children.
-    *
-    * @returns \c True if the specified child is currently selected,
-    *          \c False otherwise.
-    **/
-    boolean isChildSelected (in long childIndex);
-    /**
-     * Attempt to select all of the children of a Selection implementor.
-     * Not all Selection implementors support this operation (for instance, 
-     * implementations which support only "single selection" do not support this operation).
-     *
-     * @returns \c True if successful, \c False otherwise.
-     */
-    boolean selectAll ();
-    /**
-     * Attempt to clear all selections (i.e. deselect all children) of a Selection.
-     * Not all Selection implementations allow the removal of all selections.
-     *
-     * @note this operation may fail if the object must have at least one selected child,
-     * if the user does not have permission to change the selection, or if the Selection
-     * does not have ::State::STATE_SENSITIVE.
-     *
-     * @returns \c True if the selections were successfully cleared, \c False otherwise.
-     */
-    boolean clearSelection ();
-    /**
-     * Remove a child from the selected children list of a Selection,
-     *       if the child is currently selected.
-     *
-     * @note unlike deselectSelectedChild, \c childIndex is the zero-offset
-     *       index into the Accessible instance's list of children,
-     *       not the index into the 'selected child list'.
-     *
-     * @param childIndex: a long integer (the zero offset index into the Accessible
-     *              object's list of children) indicating which child of the
-     *              Selection is to be selected.
-     *
-     * @returns \c True if the child was successfully selected, 
-     *          \c False otherwise.
-     *
-     * @see deselectSelectedChild
-     *
-     * @since AT-SPI 1.8.0
-     */
-    boolean deselectChild (in long childIndex);
-
-    /**
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-  };
-};
diff --git a/idl/Accessibility_Selector.idl b/idl/Accessibility_Selector.idl
deleted file mode 100644 (file)
index 83e795a..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Bonobo_Unknown.idl>
-
-#ifndef _ACCESSIBILITY_SELECTOR_IDL_
-#define _ACCESSIBILITY_SELECTOR_IDL_
-
-module Accessibility {
-
-    /** A structure which encapsulates both a string representation of a command and a unique command ID **/
-    struct Command {
-         string name;
-         long   id;
-     };
-
-    /** A list of Command objects **/
-    typedef sequence<Command> CommandList;
-
-    /** 
-    * An interface which should be implemented by assistive technologies or other
-    * clients of the ::Selector interface, over which notifications to the list of
-    * available commands is made.  The notifyCommands() method of the client is then called by 
-    * the ::Selector instance.
-    * @since AT-SPI 1.7.0
-    **/
-    interface CommandListener {
-       /**
-        * Notify the CommandListener instance of changes to the currently
-        * available commands, by sending the current ::CommandList.
-        *
-        * @param commands The newly-available list of ::Command objects which
-        * may be invoked by the listener.
-        **/
-       void notifyCommands (in CommandList commands);
-    };
-
-    /**
-     * This interface is intended for use by assistive technologies
-     * and related user-agents.  Via this interface, an assistive technology or
-     * user agent may expose a series of choices or selections in textual form,
-     * which can be activated on demand by a client of the Selector interface.
-     *
-     * Examples of the use of this interface include voice-command and remote-control
-     * applications, in which the user interaction is wholly or partly delegated by the 
-     * implementor to an external agent.  
-     * @since AT-SPI 1.7.0
-     **/
-  interface Selector : Bonobo::Unknown {
-
-      /** 
-       * A code returned by a call to ::activateCommand, indicating 
-       * the result of the activation request.
-       **/
-      enum CommandResult {
-         COMMAND_RESULT_INVALID, /**< The command was invalid or ill-formed; usually indicates
-                                  * an error condition. */
-         COMMAND_RESULT_SUCCESS, /**< The command was successfully activated. */
-         COMMAND_RESULT_FAILED, /**< The command was valid, but could not be activated.
-                                 * This may be due to problems with permissions or error conditions.
-                                 */
-         COMMAND_RESULT_OBSOLETE, /**< The command is no longer valid in the current program context. 
-                                   * This may mean that the application has changed state in such a
-                                   * way that the specified command it no longer applicable, or
-                                   * because changes to the application state have rendered it
-                                   * ambiguous.  Commands should be re-fetched and a new selection
-                                   * made.
-                                   */
-         COMMAND_RESULT_LAST_DEFINED /**< Defines size of enumeration; 
-                                        do not use this value as a parameter.*/
-      };
-
-      /** This attribute is TRUE if this Selector allows its ::CommandList to be specified by the client **/
-      readonly attribute boolean supportsReplace;
-
-      /** 
-       * Query the ::Selector for the current ::CommandList.
-       *
-       * @returns the currently available ::CommandList 
-       **/
-      CommandList getCommands ();
-
-      /**
-       * @returns TRUE if the replacement request was successful, 
-       * FALSE if the request could not be honored.
-       **/
-      boolean replaceCommands (in CommandList commands);
-
-      /** 
-       * Ask the ::Selector to re-calculate its ::CommandList.
-       * @note in most cases the ::Selector will continuously
-       * update its ::CommandList without recourse to this call.
-       * This call is equivalent to ::getCommands, except that
-       * after ::refreshCommands the new ::CommandList will be returned
-       * via any registered ::CommandListener instances rather than
-       * synchronously via this call.
-       *
-       * @returns TRUE if the ::CommandList changed.
-       **/
-      boolean refreshCommands ();
-
-      /** 
-       * Request that the ::Selector invoke the specified ::Command.
-       * @param cmd the ::Command to activate/invoke.
-       * @returns a ::CommandResult indicating whether the 
-       * request was honored, and the reason for failure if the
-       * ::Command could not be activated or invoked.
-       **/
-      CommandResult activateCommand (in Command cmd);
-
-      /** 
-       * Register a :CommandListener instance for notification of 
-       * changes to the command set.
-       * @param listener the ::CommandListener to be notified of changes.
-       **/
-      void registerChangeListener (in CommandListener listener);
-
-      /** 
-       * Tell the ::Selector instance to cease notifying the
-       * specified ::CommandListener of changes to the command list.
-       * @param listener the ::CommandListener to remove from the
-       * notification list.
-       **/
-      void deregisterChangeListener (in CommandListener listener);
-
-       /**
-        *\cond
-        * unImplemented:
-        *
-        * placeholders for future expansion.
-        */
-       void unImplemented ();
-       void unImplemented2 ();
-       void unImplemented3 ();
-       void unImplemented4 ();
-        /**\endcond */
-    };
-
-};
-
-#endif
diff --git a/idl/Accessibility_State.idl b/idl/Accessibility_State.idl
deleted file mode 100644 (file)
index 189fa7c..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _ACCESSIBILITY_STATE_IDL
-#define _ACCESSIBILITY_STATE_IDL
-
-module Accessibility {
-
-  enum StateType {
-  STATE_INVALID,
-  /** Indicates a window is currently the active window, or is an active subelement within a container or table **/
-  STATE_ACTIVE,
-  /** Indicates that the object is armed */
-  STATE_ARMED,
-  /** 
-   * 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.
-   */
-  STATE_BUSY,
-  /** Indicates this object is currently checked */
-  STATE_CHECKED,
-  /** Indicates this object is collapsed */
-  STATE_COLLAPSED,
-  /** Indicates that this object no longer has a valid backing widget 
-   * (for instance, if its peer object has been destroyed) */
-  STATE_DEFUNCT,
-  /** Indicates the user can change the contents of this object */
-  STATE_EDITABLE,
-  /** 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 STATE_SENSITIVE if direct user
-   * interaction cannot cause them to acquire STATE_ENABLED.  @see STATE_SENSITIVE.
-   */
-  STATE_ENABLED,
-  /** Indicates this object allows progressive disclosure of its children */
-  STATE_EXPANDABLE,
-  /** Indicates this object its expanded */
-  STATE_EXPANDED,
-  /**
-   * 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
-   */
-  STATE_FOCUSABLE,
-  /** Indicates this object currently has the keyboard focus */
-  STATE_FOCUSED,
-  /** Indicates that the object has an associated tooltip */
-  STATE_HAS_TOOLTIP,
-  /** Indicates the orientation of thsi object is horizontal */
-  STATE_HORIZONTAL,
-  /** Indicates this object is minimized and is represented only by an icon */
-  STATE_ICONIFIED,
-  /**
-   * Indicates something must be done with this object before the user can
-   * interact with an object in a different window.
-   */
-  STATE_MODAL,
-  /** Indicates this (text) object can contain multiple lines of text */
-  STATE_MULTI_LINE,
-  /**
-   * 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.
-   */
-  STATE_MULTISELECTABLE,
-  /** Indicates this object paints every pixel within its rectangular region.
-   * It also indicates an alpha value of unity, if it supports alpha blending. 
-   */
-  STATE_OPAQUE,
-  /** Indicates this object is currently pressed */
-  STATE_PRESSED,
-  /** Indicates the size of this object's size is not fixed */
-  STATE_RESIZABLE,
-  /**
-   * 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.
-   */
-  STATE_SELECTABLE,
-  /**
-   * 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.
-   */
-  STATE_SELECTED,
-  /** Indicates this object is sensitive, e.g. to user interaction. 
-   * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
-   * but may be found in the absence of 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 STATE_SENSITIVE, for instance if a user makes 
-   * an explicit selection using an object whose current state is ambiguous or undefined.
-   * @see STATE_ENABLED, STATE_INDETERMINATE. */
-  STATE_SENSITIVE,
-  /**
-   * 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.
-   */
-  STATE_SHOWING,
-  /** Indicates this (text) object can contain only a single line of text */
-  STATE_SINGLE_LINE,
-  /** Indicates that the information returned for this object may no longer be
-   * synchronized with the application state.  This can occur if the object has STATE_TRANSIENT,
-   * and can also occur towards the end of the object peer's lifecycle. */
-  STATE_STALE,
-  /** Indicates this object is transient */
-  STATE_TRANSIENT,
-  /** 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.
-   */
-  STATE_VERTICAL,
-  /** Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
-   * @note: 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 STATE_VISIBLE and STATE_SHOWING.
-   * The absence of STATE_VISIBLE and STATE_SHOWING is semantically equivalent to saying 
-   * that an object is 'hidden'.
-   */
-  STATE_VISIBLE,
-  /**
-   * 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 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.
-   */
-  STATE_MANAGES_DESCENDANTS,
-  /**
-   * 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 STATE_INDETERMINATE
-   * if the currently selected text contains a mixture of weight attributes.  
-   * In many cases interacting with a STATE_INDETERMINATE object will cause 
-   * the context's corresponding boolean attribute to be homogenized, whereupon the object
-   * will lose STATE_INDETERMINATE and a corresponding state-changed event will be fired.
-   */
-  STATE_INDETERMINATE,
-  /**
-   * Indicates that user interaction with this object is 'required' from the user, 
-   * for instance before completing the processing of a form.
-   */
-  STATE_REQUIRED,
-  /**
-   * Indicates that an object's onscreen content is truncated, e.g. a text value in a spreadsheet cell. 
-   * @since AT-SPI 1.7.0.
-   */
-  STATE_TRUNCATED,
-  /**
-   * 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.
-   * @note 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.
-   *
-   * @since AT-SPI 1.7.0
-   */
-  STATE_ANIMATED,
-  /**
-   * 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.
-   *
-   * @since AT-SPI 1.7.0 
-   */
-  STATE_INVALID_ENTRY,
-  /**
-   * 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 Selection.
-   * 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.
-   *
-   * @since AT-SPI 1.7.0 
-   */
-  STATE_SUPPORTS_AUTOCOMPLETION,
-  /**
-   * This state indicates that the object in question supports text selection. 
-   * It should only be exposed on objects which implement the Text interface, 
-   * in order to distinguish this state from STATE_SELECTABLE, which infers that
-   * the object in question is a selectable child of an object which implements
-   * Selection.  While similar, text selection and subelement selection are
-   * distinct operations.
-   *
-   * @since AT-SPI 1.7.0 
-   */
-  STATE_SELECTABLE_TEXT,
-  /**
-   * 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.
-   *
-   * @since AT-SPI 1.7.0 
-   */
-  STATE_IS_DEFAULT,
-  /**
-   * 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.
-   *
-   * @since AT-SPI 1.7.1 
-   */
-  STATE_VISITED,
-
-  /** This value of the enumeration should not be used as a parameter, it indicates the number of
-   * items in the StateType enumeration.
-   */
-  STATE_LAST_DEFINED
-  };
-
-  typedef sequence <StateType> StateSeq;
-
-    /** 
-     * The StateSet interface encapsulates a collection of state information.
-     * It allows comparison of state information between object instances, and comparisons
-     * of an object's state with some hypothetical collection of states.
-     */
-  interface StateSet : Bonobo::Unknown {
-
-    /** Query a StateSet for a specific StateType. 
-     * @param state the StateType being queried for.
-     * @returns \c TRUE if the StateSet contains StateType \a state.
-     */
-    boolean            contains (in StateType state);
-
-    /** Add a StateType to an existing StateSet, if not already present. */
-    void               add (in StateType state);
-
-    /** Remove a StateType to an existing StateSet, if it is present. */ 
-    void               remove (in StateType state);
-
-    /** Compare two statesets for equivalence.
-     * @param tarStateSet the StateSet to be compared with this one.
-     * @returns \c TRUE if the two StateSet objects are composed of the same StateTypes. 
-     */
-    boolean            equals (in StateSet tarStateSet);
-
-    /** Compare two StateSet instances and obtain their differences.
-     * @returns a 'difference set', i.e. a StateSet consisting of those states 
-     * not shared by the two sets being compared. */
-    StateSet            compare (in StateSet compareState);
-
-    /** @returns \c TRUE if the StateSet contains no states. */
-    boolean            isEmpty ();
-
-    /** \cond */
-    /* Private */
-    StateSeq getStates ();
-
-    /**
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-    /** \endcond */
-  };
-};
-
-#endif
diff --git a/idl/Accessibility_StreamableContent.idl b/idl/Accessibility_StreamableContent.idl
deleted file mode 100644 (file)
index c38c647..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Bonobo_Storage.idl>
-
-module Accessibility {
-
-  typedef sequence<string> StringSeq;
-
-  /** 
-   * An interface by which the requested data from a StreamableContent object
-   * may be read by the client.
-   * @note this interface supercedes the use of BonoboStream by previous
-   * versions of StreamableContent.
-   *
-   * @since AT-SPI 1.7.0 
-   */
-  interface ContentStream : Bonobo::Unknown {
-
-      typedef sequence<octet> iobuf;
-
-      /** 
-       * Indicates that a transmission error has occurred while 
-       * reading or seeking the stream or data source. 
-       */
-      exception IOError {
-         string reason;
-      };
-      /** 
-       * Indicates that the requested operation is not supported by the stream instance.
-       */
-      exception NotSupported {
-         string reason;
-      };
-
-      /**
-       * The operation is supported, but the current requestor does not have
-       * permission to t the request, for instance does not have permission to read 
-       * the stream.
-       */
-      exception NoPermission {
-         string reason;
-      };
-
-      /** 
-       * Specifies the meaning of a seek 'offset'.  Not all SeekTypes are 
-       * supported by all StreamableContent data sources, for instance 
-       * some streams may not support seeking from the beginning or other
-       * types of 'backwards' seeks.
-       */
-      enum SeekType {
-         SEEK_SET, /**< Seek from the start of the stream or data source.*/
-         SEEK_CURRENT, /**< Seek relative to the current position. */
-         SEEK_END /**< Seek from the end of the file, stream, or data source. */
-      };
-
-      /** 
-       * Seek to a specified position in the Stream.
-       * @param offset an offset specifying the requested position in the stream,
-       * relative to the SeekType specified in \c whence.
-       * @param whence a SeekType specifying the reference point from which the 
-       * seek offset is calculated.  Some forms of seek are not supported by certain
-       * implementations of Stream, in which case a NotSupported exception will be raised.
-       * @returns the actual resulting offset, if no exception was raised.
-       **/
-      long seek (in long offset, in SeekType whence)
-         raises (NoPermission, IOError, NotSupported);
-      /** 
-       * Request/read a specified amount of data from a Stream.
-       * @returns the number of bytes actually read into the client buffer.
-       **/
-      long read (in long count, out iobuf buffer)  
-         raises (NoPermission, IOError);
-      /** 
-       * close the stream and release associated resources.  
-       * A client should not perform further operations on a 
-       * StreamableContent::Stream object after closing it.
-       **/
-      void close ();
-
-      /** /cond */
-      void unimplemented ();
-      void unimplemented2 ();
-      /** /endcond */
-  };
-
-
-  /** 
-   * An interface whereby an object allows its backing content
-   * to be streamed to clients.  Negotiation of content type
-   * is allowed.  Clients may examine the backing data and
-   * transform, convert, or parse the content in order to
-   * present it in an alternate form to end-users.
-   *
-   * @note The StreamableContent interface is particularly useful for saving, 
-   * printing, or post-processing entire documents, or for persisting 
-   * alternate views of a document.
-   * If document content itself is being serialized, stored, or converted,
-   * then use of the StreamableContent interface can help address performance
-   * issues.  Unlike most AT-SPI/Accessibility interfaces, this interface
-   * is not strongly tied to the current user-agent view of the
-   * a particular document, but may in some cases give access to the 
-   * underlying model data.
-   */
-  interface StreamableContent : Bonobo::Unknown {
-
-      /**
-       * getContentTypes:
-       * @returns the list of available mimetypes for this object's content.
-       */
-    StringSeq getContentTypes ();
-      /**
-       * \n DEPRECATED, use getStream instead.
-       * getContent:
-       * Retrieve this object's content, in a format appropriate to a
-       * requested mimetype.
-       *
-       * @note the data is returned as an object of type ::Bonobo::Stream.
-       * The primary methods which are supported on Bonobo::Streams for the
-       * purposes of the ::StreamableContent API are \c seek and \c read.
-       * \c seek may not be supported for all mimetypes or
-       * all implementors.
-       * 
-       \verbatim
-        long Bonobo::Stream:seek (in long offset, in SeekType whence)
-                raises (NoPermission, IOError)
-        void Bonobo::Stream:read (in long count, out iobuf buffer)
-                raises (NoPermission, IOError)
-       \endverbatim
-       *  
-       * @see ::Bonobo::Stream
-       *
-       * @returns a ::Bonobo::Stream whose mimetype matches \a contentType,
-       *          if available, or \c NIL.
-       */
-    Bonobo::Stream getContent (in string contentType);
-
-      /**
-       * Retrieve this object's content, in a format appropriate to a
-       * requested mimetype, as a ::ContentStream instance.
-       *
-       * @note This method supercedes the older getContent method, which
-       * relied on the Bonobo::Stream API.
-       * \c seek may not be supported for all mimetypes or
-       * all implementors.
-       * 
-       * @param contentType a string specifying the desired mimetype for the content stream.
-       * @returns a Stream whose mimetype matches \a contentType,
-       *          if available, or \c NIL.
-       * @since AT-SPI 1.8.0
-       */
-    ContentStream getStream (in string contentType);
-
-      /**
-       * Get a URI pointing to the content of the specified type, if such a URI
-       * can be obtained.  Not all streamable content providers have URI representations.
-       *
-       * @param contentType a string specifying the desired mimetype for the content stream.
-       * If NULL, then a URI for the default content type will be returned, if available.
-       *
-       * @returns a string which constitutes a URI for a stream of the specified
-       * content type, or NULL if no such URI can be obtained.
-       */
-    string getURI (in string contentType);
-    /**
-     * \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-      /** \endcond */
-  };
-
-};
diff --git a/idl/Accessibility_Table.idl b/idl/Accessibility_Table.idl
deleted file mode 100644 (file)
index a995ba3..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <Accessibility_Accessible.idl>
-
-module Accessibility {
-
-typedef sequence<long> LongSeq;
-
-  /**
-   * An interface used by containers whose contained data is arranged in 
-   * a "tabular" (i.e.\ row-column) fashion.  Tables may resemble a two-dimensional
-   * grid, as in a spreadsheet, or may feature objects which span multiple rows and/or
-   * columns, but whose bounds are aligned on a row/column matrix.  Thus, the Table
-   * interface may be used to represent "spreadsheets" as well as "frames".
-   *
-   * Objects within tables are children of the Table instance, and they may be referenced
-   * either via a child index or via a row/column pair.  
-   * Their role may be ROLE_TABLE_CELL, but table 'cells' may have other roles as well.
-   * These 'cells' may implement other interfaces, such as Text, Action, Image, 
-   * and Component, and should do so as appropriate to their onscreen representation
-   * and/or behavior.
-   */
- interface Table : Bonobo::Unknown {
-   /** 
-    * The total number of rows in this table (including empty rows),
-    * exclusive of any rows which are programmatically hidden.
-    * Rows which are merely scrolled out of view are included.
-    */
-   readonly attribute long nRows;
-   /** 
-    * The total number of columns in this table (including empty columns),
-    * exclusive of columns which are programmatically hidden.
-    * Columns which are scrolled out of view or clipped by the current
-    * viewport are included. 
-    */
-   readonly attribute long nColumns;
-   /**
-    * An Accessible which represents of a caption for a Table.
-    **/
-   readonly attribute Accessible caption;
-   /**
-    * An accessible object which summarizes the contents of a Table.
-    * This object is frequently itself a Table instance, albeit a simplified one.
-    */
-   readonly attribute Accessible summary;
-   /** 
-    * The number of rows currently selected.  
-    * A selected row is one in which all included cells are selected.
-    * @note Not all tables support row selection.
-    */
-   readonly attribute long nSelectedRows;
-   /** 
-    * The number of columns currently selected.  
-    * A selected column is one in which all included cells are selected.
-    * @note Not all tables support column selection.
-    */
-   readonly attribute long nSelectedColumns;
-   /**
-    * Get the table cell at the specified row and column indices.
-    * @note    To get the accessible object at a particular (x, y) screen coordinate,
-    *          use Accessible::getAccessibleAtPoint ().
-    *
-    * @param row: the specified table row, zero-indexed.
-    * @param column: the specified table column, zero-indexed.
-    *
-    * @returns an Accessible object representing the specified table cell.
-    **/   
-   Accessible getAccessibleAt (in long row, in long column);
-   /**
-    * Get the 1-D child index corresponding to the specified 2-D row and column indices.
-    * @note    To get the accessible object at a particular (x, y) screen coordinate,
-    *          use Accessible::getAccessibleAtPoint.
-    *
-    * @param row: the specified table row, zero-indexed.
-    * @param column: the specified table column, zero-indexed.
-    *
-    * @see getRowAtIndex, getColumnAtIndex
-    *
-    * @returns a long integer which serves as the index of a specified cell in the
-    *          table, in a form usable by Accessible::getChildAtIndex.
-    **/   
-   long getIndexAt (in long row, in long column);
-   /**
-    * Get the table row index occupied by the child at a particular 1-D child index.
-    *
-    * @param index: the specified child index, zero-indexed.
-    *
-    * @see getIndexAt(), getColumnAtIndex()
-    *
-    * @returns a long integer indicating the first row spanned by the child of a
-    *          table, at the specified 1-D (zero-offset) \c index.
-    **/
-   long getRowAtIndex (in long index);
-   /**
-    * Get the table column index occupied by the child at a particular 1-D child index.
-    *
-    * @param index: the specified child index, zero-indexed.
-    *
-    * @see getIndexAt(), getRowAtIndex()
-    *
-    * @returns a long integer indicating the first column spanned by the child of a
-    *          table, at the specified 1-D (zero-offset) \c index.
-    **/
-   long getColumnAtIndex (in long index);
-   /**
-    * Get a text description of a particular table row.  This differs from
-    * AccessibleTable_getRowHeader, which returns an Accessible.
-    * @param row: the specified table row, zero-indexed.
-    *
-    * @returns a UTF-8 string describing the specified table row, if available.
-    **/ 
-   string getRowDescription (in long row);
-   /**
-    * Get a text description of a particular table column.  This differs from
-    * AccessibleTable_getColumnHeader, which returns an Accessible.
-    * @param column: the specified table column, zero-indexed.
-    *
-    * @returns a UTF-8 string describing the specified table column, if available.
-    **/ 
-   string getColumnDescription (in long column);
-   /**
-    * Get 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).
-    *
-    * @param row: the specified table row, zero-indexed.
-    * @param column: the specified table column, zero-indexed.
-    *
-    * @returns a long integer indicating the number of rows spanned by the specified cell.
-    **/
-   long getRowExtentAt (in long row, in long column);
-   /**
-    * Get 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).
-    *
-    * @param row: the specified table row, zero-indexed.
-    * @param column: the specified table column, zero-indexed.
-    *
-    * @returns a long integer indicating the number of columns spanned by the 
-    * specified cell.
-    **/
-   long getColumnExtentAt (in long row, in long column);
-   /**
-    * Get the header associated with a table row, if available.  This differs from
-    * getRowDescription, which returns a string.
-    *
-    * @param row: the specified table row, zero-indexed.
-    *
-    * @returns an Accessible representatin of the specified table row, if available.
-    **/
-   Accessible getRowHeader (in long row);
-   /**
-    * Get the header associated with a table column, if available, as an 
-    * instance of Accessible.  This differs from
-    * getColumnDescription, which returns a string.
-    *
-    * @param column: the specified table column, zero-indexed.
-    *
-    * @returns an Accessible representatin of the specified table column, if available.
-    **/
-   Accessible getColumnHeader (in long column);
-   /**
-    * Obtain the indices of all rows which are currently selected.  
-    * @note Not all tables support row selection.
-    *
-    * @returns a sequence of integers comprising the indices of rows currently selected.
-    **/
-   LongSeq getSelectedRows ();
-   /**
-    * Obtain the indices of all columns which are currently selected.  
-    * @note Not all tables support column selection.
-    *
-    * @returns a sequence of integers comprising the indices of columns currently selected.
-    **/
-   LongSeq getSelectedColumns ();
-   /**
-    * Determine whether a table row is selected.  
-    * @note Not all tables support row selection.
-    *
-    * @param row: the row being queried.
-    *
-    * @returns \c True if the specified row is currently selected, \c False if not.
-    **/
-   boolean isRowSelected (in long row);
-   /**
-    * Determine whether a table column is selected.  
-    * @note Not all tables support column selection.
-    *
-    * @param column: the column being queried.
-    *
-    * @returns \c True if the specified column is currently selected, \c False if not.
-    **/
-   boolean isColumnSelected (in long column);
-   /**
-    * Determine whether the cell at a specific row and column is selected.
-    * @param row a row occupied by the cell whose state is being queried.
-    * @param column a column occupied by the cell whose state is being queried.
-    *
-    * @returns \c True if the specified cell is currently selected, 
-    * \c False if not.
-    **/
-   boolean isSelected (in long row, in long column);
-   /**
-    * Select the specified row, adding it to the current row selection,
-    * if the table's selection model permits it.
-    *
-    * @param row
-    * @note Possible reasons for addRowSelection to return \c False
-    * include:
-    * \li The table does not support Selection
-    * \li The table row includes cells which do not have STATE_SELECTABLE
-    * \li The table does not support selection by row
-    * \li The table does not support selection of multiple rows, and
-    * one row is already selected.
-    * \li The table does not support non-contiguous selections (i.e.
-    * does not include STATE_MULTISELECTABLE), and the specified row
-    * would result in selection of non-contiguous rows.
-    * \li The table does not support user-instigated selection.
-    *
-    * @returns \c True if the specified row was successfully selected, 
-    * \c False if not. 
-    **/
-   boolean addRowSelection (in long row);
-   /**
-    * Select the specified column, adding it to the current column selection,
-    * if the table's selection model permits it.
-    *
-    * @param column
-    * @note Possible reasons for addColumnSelection to return \c False
-    * include:
-    * \li The table does not support Selection
-    * \li The table column includes cells which do not have STATE_SELECTABLE
-    * \li The table does not support selection by column
-    * \li The table does not support selection of multiple columns, and
-    * one column is already selected.
-    * \li The table does not support non-contiguous selections (i.e.
-    * does not include STATE_MULTISELECTABLE), and the specified column
-    * would result in selection of non-contiguous columns.
-    * \li The table does not support user-instigated selection.
-    *
-    * @returns \c True if the specified column was successfully selected, 
-    * \c False if not. 
-    **/
-   boolean addColumnSelection (in long column);
-   /**
-    * Remove the specified row from current row selection,
-    * if the table's selection model permits it.
-    *
-    * @param row
-    * @note Possible reasons for removeRowSelection to return \c False
-    * include:
-    * \li The table does not support user-instigated Selection
-    * \li The table has no selected rows or does not support deselection by row
-    *
-    * @returns \c True if the specified row was successfully de-selected, 
-    * \c False if not. 
-    **/
-   boolean removeRowSelection (in long row);
-   /**
-    * Remove the specified column from current column selection,
-    * if the table's selection model permits it.
-    *
-    * @param column
-    * @note Possible reasons for removeColumnSelection to return \c False
-    * include:
-    * \li The table does not support user-instigated modification of
-    * selection state
-    * \li The table has no selected columns or does not support 
-    * deselection by column.
-    *
-    * @returns \c True if the specified column was successfully de-selected, 
-    * \c False if not. 
-    **/
-   boolean removeColumnSelection (in long column);
-   /** 
-    * Given a child index, determine the row and column indices and 
-    * extents, and whether the cell is currently selected.  If
-    * the child at \c index is not a cell (for instance, if it is 
-    * a summary, caption, etc.), \c False is returned.
-    *
-    * @param index the index of the Table child whose row/column 
-    * extents are requested.
-    * @param row back-filled with the first table row associated with
-    * the cell with child index \c index.
-    * @param col back-filled with the first table column associated 
-    * with the cell with child index \c index.
-    * @param row_extents back-filled with the number of table rows 
-    * across which child \c i extends.
-    * @param col_extents back-filled with the number of table columns
-    * across which child \c i extends.
-    * @param is_selected a boolean which is back-filled with \c True
-    * if the child at index \c i corresponds to a selected table cell,
-    * \c False otherwise.
-    *
-    * Example:
-    * If the Table child at index '6' extends across columns 5 and 6 of
-    * row 2 of a Table instance, and is currently selected, then
-    * \code
-    * retval = table::getRowColumnExtentsAtIndex (6, row, col, 
-    *                                             row_extents,
-    *                                             col_extents,
-    *                                             is_selected);
-    * \endcode
-    * will return True, and after the call
-    * \c row, \c col, \c row_extents, \c col_extents,
-    * and \c is_selected will contain \c 2, \c 5, \c 1, \c 2, and 
-    * \c True, respectively.
-    *
-    * @returns \c True if the index is associated with a valid table
-    * cell, \c False if the index does not correspond to a cell.  If 
-    * \c False is returned, the values of the out parameters are 
-    * undefined.
-    * 
-    * @since AT-SPI 1.7.0
-    **/
-    boolean getRowColumnExtentsAtIndex (in long index, out long row, 
-                                       out long col, 
-                                       out long row_extents, 
-                                       out long col_extents, 
-                                       out boolean is_selected);
-    /** \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-    void unImplemented5 ();
-    void unImplemented6 ();
-    void unImplemented7 ();
-    /** \endcond */
-  };
-};
diff --git a/idl/Accessibility_Text.idl b/idl/Accessibility_Text.idl
deleted file mode 100644 (file)
index 133594c..0000000
+++ /dev/null
@@ -1,463 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-module Accessibility {
-
-  /**
-   * Specifies the boundary conditions determining a run of text as returned from
-   * getTextAtOffset, getTextAfterOffset, and getTextBeforeOffset.
-   */
-  enum TEXT_BOUNDARY_TYPE {
-    TEXT_BOUNDARY_CHAR,/**< Text is bounded by this character only. 
-                       * Start and end offsets differ by one, by definition, for this value. 
-                       */
-    TEXT_BOUNDARY_WORD_START,/**< Boundary condition is start of a word; i.e. range is from start of
-                             * one word to the start of another word. 
-                             */
-    TEXT_BOUNDARY_WORD_END,/**< Boundary condition is the end of a word; i.e. range is from 
-                           * the end of one word to the end of another. 
-                           * @note 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.
-                           */
-    TEXT_BOUNDARY_SENTENCE_START,/**< Boundary condition is start of a sentence, as determined 
-                               *  by the application. 
-                               *  @note 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.
-                                 */
-    TEXT_BOUNDARY_SENTENCE_END,/**< Boundary condition is end of a sentence, as determined by the application, 
-                               *  including the sentence-delimiting character, for instance '.'
-                               *  @note 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.
-                               */
-    TEXT_BOUNDARY_LINE_START,/**< 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. 
-                             */
-    TEXT_BOUNDARY_LINE_END /**< 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. 
-                           */
-  };
-
-  /**
-   * TEXT_CLIP_TYPE:
-   * CLIP_MIN means text clipped by min coordinate is omitted,
-   * CLIP_MAX clips text interescted by the max coord, and CLIP_BOTH
-   * will retain only text falling fully within the min/max bounds.
-   *
-   **/
-  enum TEXT_CLIP_TYPE {
-    TEXT_CLIP_NONE,
-    TEXT_CLIP_MIN,/**< characters/glyphs clipped by the minimum coordinate are omitted */
-    TEXT_CLIP_MAX,/**< characters/glyphs which intersect the maximum coordinate are omitted */
-    TEXT_CLIP_BOTH /**< only glyphs falling entirely within the region bounded by min and max are retained. */
-  };
-
-    /** 
-     * The text interface should be implemented by objects which place textual information onscreen as character
-     * strings or glyphs.  The text interface allows access to textual content, including display attributes and
-     * semantic hints associated with runs of text, and access to bounding box information for glyphs and substrings.
-     * It also allows portions of textual content to be selected, if the object's StateSet includes
-     * STATE_SELECTABLE_TEXT. 
-     *
-     * In some cases a Text object may have, as its content, an empty string.  In particular this can
-     * occur in the case of Hypertext objects which do not display explicitly textual information onscreen,
-     * as Hypertext is derived from the Text interface.  @see Hypertext.
-     *
-     * Typographic and semantic attributes of onscreen textual content, for instance typeface, weight, 
-     * language, and such qualities as 'emphasis' or 'blockquote', are represented as text attributes.
-     * Contiguous sequences of characters over which these attributes are unchanged are referred to as
-     * "attribute runs", and are available via Text::getAttributeRun.  Where possible, implementing clients
-     * will report textual attributes which are the same over the entire text object, for instance those
-     * inherited from a default or document-scope style, via getDefaultAttributes instead of reporting them
-     * explicitly for each character.  Therefore, for any span of text, the attributes in effect are the union
-     * of the set returned by Text::getDefaultAttributes, and the set returned at a particular character
-     * offset via Text::getAttributeRun.
-     *
-     * @note Events that may be emitted by instances of Text include:
-     * \li \c "object:text-attributes-changed" The attributes of a range of text, or the range over 
-     *         which attributes apply, has changed.
-     * \li \c "object:text-changed" The text content of this object has changed.
-     * \li \c "object:text-bounds-changed" The character bounds of a text object have changed, 
-     *         for instance in response to a reformatting or reflow operation.
-     * \li \c "object:text-caret-moved" The character offset of the text caret (visible or notional) within
-     *         this object has changed.  Events of this type may also be generated when an onscreen
-     *         text caret appears or disappears.
-     * \li \c "object:text-selection-changed" The range or number of text selections within this text object
-     *         has changed.
-     *
-     * @note In some cases, objects which are not onscreen may implement Text, but if such objects
-     * implement Component, their potential visibility should be examined (via comparison with STATE_VISIBLE 
-     * and STATE_SHOWING) before exposing them to the user.  Objects which implement Text but not Component 
-     * may be encountered in special-purpose interfaces or as special ¨accessibility¨ extensions to visual 
-     * interfaces to allow non-graphical access to application features.  These instances should be considered 
-     * the exception, rather than the rule.
-     */
-  interface Text : Bonobo::Unknown {
-
-    /** A structure used to define a continguous range of text, including its 
-     * (unattributed) textual content. 
-     **/
-    struct Range {
-      long startOffset;
-      long endOffset; 
-      string content;
-      any  data;
-    };
-    
-    typedef sequence<Range> RangeList;
-
-    /** The total current number of characters in the Text object, 
-     * including whitespace and non-spacing characters.  
-     **/
-    readonly attribute long characterCount;
-
-    /** The current offset of the text caret in the Text object.  
-     * This caret may be virtual, e.g. non-visual and notional-only, but if an
-     * onscreen representation of the caret position is visible, it will correspond to this offset.
-     * The caret offset is given as a character offset, as opposed to a byte offset into 
-     * a text buffer or a column offset. 
-     **/
-    readonly attribute long caretOffset;
-
-      /**
-       * Obtain all or part of the onscreen textual content of a Text object.  If endOffset is specified as 
-       * "-1", then this method will return the entire onscreen textual contents of the Text object.
-       * @note 'onscreen' in this context means "potentially onscreen", this method does not perform any sort 
-       * of coordinate visibility clipping or window-stack-ordering clipping.  The text thus reported 
-       * corresponds to the text which would be presented onscreen if the object implementing the Text interface
-       * were entirely unobscured. 
-       * @returns the textual content of the current Text object beginning startOffset (inclusive) 
-       * up to but not including the character at endOffset.
-       **/
-    string getText (in long startOffset, in long endOffset);
-
-      /** Programmatically move the text caret (visible or virtual, as above) to a given position. 
-       * @param offset a long int indicating the desired character offset.  Not all implementations of
-       * Text will honor setCaretOffset requests, so the return value below should be checked by the client.
-       * @returns \c TRUE if the request was carried out, or \c FALSE if the caret could not be moved to 
-       * the requested position.
-       **/
-    boolean setCaretOffset (in long offset);
-
-      /**
-       * Obtain a subset of the text content of an object which entirely precedes \c offset,
-       * delimited by character, word, line, or sentence boundaries as specified by \c type.  The
-       * starting and ending offsets of the resulting substring are returned in \c startOffset
-       * and \c endOffset.  By definition, if such a substring exists, \c endOffset is less than or
-       * equal to \c offset.
-       * @param offset the offset from which the substring search begins.
-       * @param type the text-boundary delimiter which determines whether the returned text constitures
-       *        a character, word, line, or sentence (and possibly attendant whitespace), 
-       *        and whether the start or ending of such a substring forms the boundary condition.
-       * @param startOffset back-filled with the starting offset of the resulting substring, if one exists.
-       * @param endOffset back-filled with the offset of the character immediately following the resulting
-       *                  substring, if one exists.
-       * @see TEXT_BOUNDARY_TYPE
-       * @returns a string which is a substring of the text content of the object, delimited by the
-       * specified boundary condition.
-       */
-    string getTextBeforeOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
-                               out long startOffset, out long endOffset);
-      /**
-       * Obtain a subset of the text content of an object which includes the specified \c offset, 
-       * delimited by character, word, line, or sentence boundaries as specified by \c type.  The
-       * starting and ending offsets of the resulting substring are returned in \c startOffset
-       * and \c endOffset.  
-       * @param offset the offset from which the substring search begins, and which must 
-       *        lie within the returned substring.
-       * @param type the text-boundary delimiter which determines whether the returned text constitures
-       *        a character, word, line, or sentence (and possibly attendant whitespace), 
-       *        and whether the start or ending of such a substring forms the boundary condition.
-       * @param startOffset back-filled with the starting offset of the resulting substring, if one exists.
-       * @param endOffset back-filled with the offset of the character immediately following the resulting
-       *                  substring, if one exists.
-       * @see TEXT_BOUNDARY_TYPE
-       * @returns a string which is a substring of the text content of the object, delimited by the
-       * specified boundary condition.
-       */
-    string getTextAtOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
-                                                       out long startOffset, out long endOffset);
-      /**
-       * Obtain a subset of the text content of an object which entirely follows \c offset,
-       * delimited by character, word, line, or sentence boundaries as specified by \c type.  The
-       * starting and ending offsets of the resulting substring are returned in \c startOffset
-       * and \c endOffset.  By definition, if such a substring exists, \c startOffset must be greater than
-       * \c offset.
-       * @param offset the offset from which the substring search begins, and which must 
-       *        lie before the returned substring.
-       * @param type the text-boundary delimiter which determines whether the returned text constitures
-       *        a character, word, line, or sentence (and possibly attendant whitespace), 
-       *        and whether the start or ending of such a substring forms the boundary condition.
-       * @param startOffset back-filled with the starting offset of the resulting substring, if one exists.
-       * @param endOffset back-filled with the offset of the character immediately following the resulting
-       *                  substring, if one exists.
-       * @see TEXT_BOUNDARY_TYPE
-       * @returns a string which is a substring of the text content of the object, delimited by the
-       * specified boundary condition.
-       */
-    string getTextAfterOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
-                                                       out long startOffset, out long endOffset);
-      /**
-       * @returns an unsigned long integer whose value corresponds to the UCS-4 representation of the
-       * character at the specified text offset, or 0 if offset is out of range.
-       */
-    unsigned long getCharacterAtOffset (in long offset);  /* long instead of wchar, 
-                                                          * to allow unicode chars > 16 bits 
-                                                          */
-    /** 
-     * Get the string value of a named attribute at a given offset, if defined.
-     * @param offset the offset of the character for which the attribute run is to be obtained.
-     * @param attributeName the name of the attribute for which the value is to be returned, if defined.
-     * @param startOffset back-filled with the offset of the first character in the attribute run
-     * containing the character at \c offset.
-     * @param endOffset back-filled with the offset of the first character past the end of the
-     * attribute run containing the character at \c offset.
-     * @param defined back-filled with \c True if the attributeName has a defined value at \c offset,
-     * \c False otherwise.
-     * @returns the value of attribute (name-value pair) corresponding to "name", if defined. 
-     **/
-    string getAttributeValue (in long offset, in string attributeName,
-                             out long startOffset,
-                             out long endOffset,
-                             out boolean defined);
-    /** 
-     * getAttributes is deprecated in favor of getAttributeRun.
-     * @returns the attributes at offset, as a semicolon-delimited set of colon-delimited name-value pairs. 
-     * @see getAttributeRun
-     **/
-    string getAttributes (in long offset,
-                         out long startOffset, out long endOffset);
-      /** 
-       * Deprecated in favor of getDefaultAttributeSet.
-       * @returns the attributes which apply to the entire text content, but which were not explicitly
-       * specified by the content creator.
-       * @see getDefaultAttributeSet
-       **/
-    string getDefaultAttributes ();
-      /**
-       * Obtain a the bounding box, as x, y, width, and height, of the character or glyph at a particular 
-       * character offset in this object's text content.  The coordinate system in which the results are
-       * reported is specified by coordType.  If an onscreen glyph corresponds to multiple character offsets,
-       * for instance if the glyph is a ligature, the bounding box reported will include the entire glyph and
-       * therefore may apply to more than one character offset.
-       * @param offset the character offset of the character or glyph being queried.
-       * @param x the minimum horizontal coordinate of the bounding box of the glyph representing 
-       *          the character at \c offset.
-       * @param y the minimum vertical coordinate of the bounding box of the glyph representing 
-       *          the character at \c offset.
-       * @param width the horizontal extent of the bounding box of the glyph representing 
-       *          the character at \c offset.
-       * @param height the vertical extent of the bounding box of the glyph representing 
-       *          the character at \c offset.
-       * @param coordType If 0, the results will be reported in screen coordinates, i.e. in pixels
-       *                  relative to the upper-left corner of the screen, with the x axis pointing right
-       *                  and the y axis pointing down.
-       *                  If 1, the results will be reported relative to the containing toplevel window,
-       *                  with the x axis pointing right and the y axis pointing down.
-       **/
-    void getCharacterExtents (in long offset, out long x, out long y, out long width, out long height, in short coordType);
-      /** 
-       * Get the offset of the character at a given onscreen coordinate.  The coordinate system used to interpret
-       * x and y is determined by parameter coordType.
-       * @param x
-       * @param y
-       * @param coordType if 0, the input coordinates are interpreted relative to the entire screen, if 1,
-       *                  they are relative to the toplevel window containing this Text object.
-       * @returns the text offset (as an offset into the character array) of the glyph whose onscreen bounds contain the point x,y, or -1 if the point is outside the bounds of any glyph.
-       **/
-    long getOffsetAtPoint (in long x, in long y, in short coordType);
-      /**
-       * Obtain the number of separate, contiguous selections in the current Text object.
-       * Text objects which do not implement selection of discontiguous text regions will always
-       * return '0' or '1'.  Note that "contiguous" is defined by continuity of the offsets, i.e.
-       * a text 'selection' is defined by a start/end offset pair.  In the case of bidirectional text,
-       * this means that a continguous selection may appear visually discontiguous, and vice-versa.
-       *
-       * @returns the number of contiguous selections in the current Text object.
-       **/
-    long getNSelections ();
-      /**
-       * The result of calling getSelection with an out-of-range selectionNum (i.e. for a selection 
-       * which does not exist) is not strictly defined, but should set endOffset equal to startOffset.
-       **/
-    void getSelection (in long selectionNum, out long startOffset, out long endOffset);
-      /**
-       * The result of calling addSelection on objects which already have one selection present, and which
-       * do not include STATE_MULTISELECTABLE, is undefined, other than the return value.
-       * @returns \c True of the selection was successfully added, \c False otherwise. Selection may
-       * fail if the object does not support selection of text (see STATE_SELECTABLE_TEXT), if the
-       * object does not support multiple selections and a selection is already defined, or for other reasons
-       * (for instance if the user does not have permission to copy the text into the relevant selection 
-       * buffer).
-       **/
-    boolean addSelection (in long startOffset, in long endOffset);
-      /**
-       * Deselect the text contained in the specified selectionNum, if such a selection
-       * exists, otherwise do nothing.  Removal of a non-existant selectionNum has no effect.
-       * @returns \c True if the selection was successfully removed, \c False otherwise.
-       **/
-    boolean removeSelection (in long selectionNum);
-      /**
-       * Modify an existing selection's start or ending offset. 
-       *
-       * Calling setSelection for a selectionNum that is not already defined has no effect.
-       * The result of calling setSelection with a selectionNum greater than 0 for objects that
-       * do not include STATE_MULTISELECTABLE is undefined.
-       * @param selectionNum indicates which of a set of non-contiguous selections to modify.
-       * @param startOffset the new starting offset for the selection
-       * @param endOffset the new ending offset for the selection
-       * @returns \c True if the selection corresponding to selectionNum is successfully modified, 
-       *             \c False otherwise.
-       **/
-    boolean setSelection (in long selectionNum, in long startOffset, in long endOffset);
-      /**
-       * Obtain the bounding box which entirely contains a given text range.
-       * Negative values may be returned for the bounding box parameters in the event
-       * that all or part of the text range is offscreen or not mapped to the screen.
-       * @param startOffset the offset of the first character in the specified range.
-       * @param endOffset the offset of the character immediately after the last 
-       *        character in the specified range.
-       * @param x an integer parameter which is back-filled with the minimum
-       *        horizontal coordinate of the resulting bounding box.
-       * @param y an integer parameter which is back-filled with the minimum
-       *        vertical coordinate of the resulting bounding box.
-       * @param width an integer parameter which is back-filled with the
-       *        horizontal extent of the bounding box.
-       * @param height an integer parameter which is back-filled with the
-       *        vertical extent of the bounding box.
-       * @param coordType If 0, the above coordinates are reported in pixels relative to
-       *        corner of the screen; if 1, the coordinates are reported relative to the
-       *        corner of the containing toplevel window.
-       **/
-    void    getRangeExtents (in long startOffset, in long endOffset, 
-                            out long x, out long y, 
-                            out long width, out long height, in short coordType);
-
-      /**
-       * Return the text content within a bounding box, 
-       * as a list of Range structures.
-       * Depending on the TEXT_CLIP_TYPE parameters, glyphs which are clipped by the
-       * bounding box (i.e. which lie partially inside and partially outside it)
-       * may or may not be included in the ranges returned.  
-       * @note This method may be of particular interest to screen review algorithms.
-       * @see TEXT_CLIP_TYPE.
-       * @param x the minimum x ( i.e. leftmost)  coordinate of the bounding box.
-       * @param y the minimum y coordinate of the bounding box.
-       * @param width the horizontal size of the bounding box.  The rightmost bound of the bounding box
-       *        is (x + width);
-       * @param height the vertical size of the bounding box.  The maximum y value of the bounding box
-       *        is (y + height);
-       * @param coordType If 0, the above coordinates are interpreted as pixels relative to
-       *        corner of the screen; if 1, the coordinates are interpreted as pixels relative to the
-       *        corner of the containing toplevel window.
-       * @param xClipType determines whether text which intersects the bounding box in the x direction
-       *        is included.
-       * @param yClipType determines whether text which intersects the bounding box in the y direction
-       *        is included.
-       **/
-    RangeList getBoundedRanges (in long x, in long y, 
-                               in long width, in long height, 
-                               in short coordType, 
-                               in TEXT_CLIP_TYPE xClipType, 
-                               in TEXT_CLIP_TYPE yClipType);
-
-    /** 
-     * Query a particular text object for the text attributes defined at a given offset, 
-     * obtaining the start and end of the "attribute run" over which these attributes are currently 
-     * invariant.  Text attributes are those presentational, typographic, or semantic attributes or 
-     * qualitites which apply to a range of text specifyable by starting and ending offsets.  
-     * Attributes relevant to localization should be provided in 
-     * accordance with the w3c "Internationalization and Localization Markup Requirements", 
-     * http://www.w3.org/TR/2005/WD-itsreq-20051122/
-     * Other text attributes should choose their names and value semantics in accordance with relevant
-     * standards such as CSS level 2 (http://www.w3.org/TR/1998/REC-CSS2-19980512), 
-     * XHTML 1.0 (http://www.w3.org/TR/2002/REC-xhtml1-20020801), and
-     * WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).  Those attributes from the aforementioned
-     * specifications and recommendations which do not concern typographic, presentational, or 
-     * semantic aspects of text should be exposed via the more general Accessible::getAttributes() API
-     * (if at all).
-     *
-     * For example, CSS attributes which should be exposed on text (either as default attributes, or 
-     * as explicitly-set attributes when non-default values are specified in the content view) include
-     * the Font attributes (i.e. "css2:font-weight", "css2:font-style"), 
-     * the "css2:color" and "css2:background-color" attributes, and "css2:text-decoration" attribute. 
-     * 
-     * If includeDefaults is TRUE, then this AttributeSet should include the default
-     * attributes as well as those which are explicitly assigned to the attribute run in question.
-     * startOffset and endOffset will be back-filled to indicate the start and end of the attribute run
-     * which contains 'offset' - an attribute run is a contiguous section of text whose attributes are
-     * homogeneous.
-     * @param offset the offset of the character whose attributes will be reported.
-     * @param startOffset backfilled with the starting offset of the character range over which all
-     *                    text attributes match those of \c offset, i.e. the start of the homogeneous
-     *                    attribute run including \c offset.
-     * @param endOffset backfilled with the offset of the first character past the character range over which all
-     *                    text attributes match those of \c offset, i.e. the character immediately after 
-     *                    the homogeneous attribute run including \c offset.
-     * @param includeDefaults if False, 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.  See also Text::getDefaultAttributes.
-     *
-     * @note Clients seeking annotations or properties of a more general nature, which 
-     * are not specific to the onscreen textual content of objects and cannot logically be applied
-     * to specific character offset ranges,
-     * should use Accessible::getAttributes instead.
-     * The attributes returned by Text::getAttributeRun (with or without 'default attributes'), 
-     * are distinct from the properties/attributes returned by Accessible::getAttributes.
-     * 
-     * @see Accessible::getAttributes
-     *
-     * @returns the AttributeSet defined at offset, optionally including the 'default' attributes. 
-     *
-     * @since AT-SPI 1.7.0
-     **/
-    AttributeSet getAttributeRun (in long offset,
-                                 out long startOffset, 
-                                 out long endOffset,
-                                 in boolean includeDefaults);
-      /** 
-       * Return an ::AttributeSet containing the text attributes which apply to all text in the object
-       * by virtue of the default settings of the document, view, or user agent; e.g. those
-       * attributes which are implied rather than explicitly applied to the text object.
-       * For instance, an object whose entire text content has been explicitly marked as 'bold' will
-       * report the 'bold' attribute via getAttributeRun(), whereas an object whose text weight is
-       * inspecified may report the default or implied text weight in the default AttributeSet.
-       * 
-       * @since AT-SPI 1.7.0
-       **/
-    AttributeSet getDefaultAttributeSet ();
-
-    /** \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    /** \endcond **/
-  };
-};
diff --git a/idl/Accessibility_Value.idl b/idl/Accessibility_Value.idl
deleted file mode 100644 (file)
index 4531879..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/* 
- * AT-SPI - Assistive Technology Service Provider Interface 
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-module Accessibility {
-
-   /**
-    * An interface supporting controls which allow a
-    * one-dimensional, scalar quantity to be modified or which
-    * reflect a scalar quantity. (If STATE_EDITABLE is not present, 
-    * the valuator is treated as "read only".
-    *
-    * @note Events generated by Image instances include:
-    * \li \c "object:value-changed"
-    */
-  interface Value : Bonobo::Unknown {
-    /**
-     * The minimum value allowed by this valuator.
-     */
-    readonly attribute double minimumValue;
-    /**
-     * The maximum value allowed by this valuator.
-     */
-    readonly attribute double maximumValue;
-    /**
-     * The smallest incremental change which this valuator allows.
-     * If 0, the incremental changes to the valuator are 
-     * limited only by the precision of a double precision value
-     * on the platform.
-     */
-    readonly attribute double minimumIncrement;
-    /**
-     * The current value of the valuator.
-     */
-    attribute double currentValue;
-
-    /** \cond
-     * unImplemented:
-     *
-     * placeholders for future expansion.
-     */
-    void unImplemented ();
-    void unImplemented2 ();
-    void unImplemented3 ();
-    void unImplemented4 ();
-    /** \endcond */
-  };
-};
diff --git a/idl/Makefile.am b/idl/Makefile.am
deleted file mode 100644 (file)
index 41a6dc1..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-IDL_FILES =                                    \
-       Accessibility.idl                       \
-       Accessibility_Accessible.idl            \
-       Accessibility_Action.idl                \
-       Accessibility_Application.idl           \
-       Accessibility_Collection.idl            \
-       Accessibility_Component.idl             \
-       Accessibility_Desktop.idl               \
-       Accessibility_Document.idl              \
-       Accessibility_EditableText.idl          \
-       Accessibility_Event.idl                 \
-       Accessibility_Hyperlink.idl             \
-       Accessibility_Hypertext.idl             \
-       Accessibility_Image.idl                 \
-       Accessibility_Registry.idl              \
-       Accessibility_Relation.idl              \
-       Accessibility_Role.idl                  \
-       Accessibility_Selection.idl             \
-       Accessibility_Selector.idl              \
-       Accessibility_State.idl                 \
-       Accessibility_StreamableContent.idl     \
-       Accessibility_Table.idl                 \
-       Accessibility_Text.idl                  \
-       Accessibility_Value.idl                 \
-       Accessibility_LoginHelper.idl
-
-EXTRA_DIST=$(IDL_FILES)
diff --git a/libloginhelper-1.0.pc.in b/libloginhelper-1.0.pc.in
deleted file mode 100644 (file)
index 70124d9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: liblogin-helper
-Description: Login-Helper library for assistive technologies
-Requires: libbonobo-2.0 atk libspi-1.0
-Version: @VERSION@
-Libs: -L${libdir} -lloginhelper
-Cflags: -I${includedir}/at-spi-1.0
diff --git a/login-helper/Makefile.am b/login-helper/Makefile.am
deleted file mode 100644 (file)
index d314072..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-lib_LTLIBRARIES = libloginhelper.la
-
-LDADD = $(X_LIBS) $(LOGIN_HELPER_LIBS) 
-
-INCLUDES = -I$(top_srcdir)          \
-           -I$(top_builddir)        \
-          $(WARN_CFLAGS)       \
-           $(DBUS_GLIB_CFLAGS)
-
-libloginhelperincludedir = $(includedir)/at-spi-1.0/login-helper
-
-libloginhelper_la_LDFLAGS = -no-undefined
-libloginhelper_la_LIBADD = \
-       $(top_builddir)/spi-common/libspicommon.la \
-       $(top_builddir)/droute/libdroute.la \
-       $(X_LIBS)
-
-libloginhelperinclude_HEADERS = \
-       login-helper.h                  
-
-libloginhelper_la_SOURCES =            \
-       login-helper.c
diff --git a/login-helper/login-helper.c b/login-helper/login-helper.c
deleted file mode 100644 (file)
index 68e5017..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * LoginHelper interface 
- * Copyright 2004 Sun Microsystems Inc.,
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* login-helper.c: minimal implementation of Accessibility_LoginHelper.idl */
-#include <config.h>
-#include "login-helper.h"
-#include "spi-common/spi-dbus.h"
-#include "droute/droute.h"
-
-/* Our parent Gtk object type */
-#define PARENT_TYPE G_TYPE_OBJECT
-
-/* A pointer to our parent object class */
-static GObjectClass *g_object_parent_class;
-
-static void
-login_helper_finalize (GObject *object)
-{
-  (G_OBJECT_CLASS (g_object_parent_class))->finalize (object);
-}
-
-static gboolean
-login_helper_set_safe (LoginHelper *helper, gboolean safe)
-{
-  LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
-
-  if (klass->set_safe)
-    return (* klass->set_safe)(helper, safe);
-  else
-    return FALSE;
-}
-
-static DBusMessage *
-impl_set_safe (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  LoginHelper *helper = user_data;
-
-  DBusError error;
-  dbus_bool_t safe;
-  dbus_bool_t rv;
-  DBusMessage *reply;
-
-  dbus_error_init (&error);
-  if (!dbus_message_get_args
-      (message, &error, DBUS_TYPE_BOOLEAN, &safe, DBUS_TYPE_INVALID))
-    {
-      return droute_invalid_arguments_error (message);
-    }
-  rv = login_helper_set_safe (helper, safe);
-  reply = dbus_message_new_method_return (message);
-  if (reply)
-    {
-      dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &rv, DBUS_TYPE_INVALID);
-    }
-  return reply;
-}
-
-static LoginHelperDeviceReqFlags
-login_helper_get_device_reqs (LoginHelper *helper)
-{
-  LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
-
-  if (klass->get_device_reqs)
-    return  (* klass->get_device_reqs)(helper);
-  else
-    return 0;
-}
-
-static DBusMessage *
-impl_get_device_reqs (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  LoginHelper *helper = user_data;
-  dbus_uint32_t flags = 0;
-  DBusMessage *reply;
-
-  flags = login_helper_get_device_reqs (helper);
-
-  reply = dbus_message_new_method_return (message);
-  if (reply)
-    {
-      dbus_message_append_args (reply, DBUS_TYPE_UINT32, &flags, DBUS_TYPE_INVALID);
-    }
-  return reply;
-}
-
-static Window*
-login_helper_get_raise_windows (LoginHelper *helper)
-{
-  LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
-  
-  if (klass->get_raise_windows)
-    return (* klass->get_raise_windows)(helper);
-  else
-    return NULL;
-}
-
-static DBusMessage *
-impl_get_raise_windows (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  LoginHelper *helper = user_data;
-  unsigned long *wids;
-  gint count = 0;
-  DBusMessage *reply;
-  DBusMessageIter iter, iter_array;
-
-  wids = login_helper_get_raise_windows (helper);
-  reply = dbus_message_new_method_return (message);
-  if (!reply) return NULL;
-  dbus_message_iter_init_append (message, &iter);
-  if (dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "i", &iter_array) && wids)
-  {
-    while (*wids)
-    {
-      // TODO: figure out if this will break on 64-bit systems
-      dbus_int32_t id = *wids++;
-      dbus_message_iter_append_basic (&iter_array, DBUS_TYPE_INT32, &id);
-    }
-    dbus_message_iter_close_container (&iter, &iter_array);
-  }
-  if (wids) g_free (wids);
-  return reply;
-}
-
-static void
-login_helper_class_init (LoginHelperClass *klass)
-{
-  GObjectClass * object_class = (GObjectClass *) klass;
-
-  g_object_parent_class = g_type_class_peek_parent (klass);
-
-  object_class->finalize = login_helper_finalize;
-}
-
-static void
-login_helper_init (LoginHelper *object)
-{
-}
-
-G_DEFINE_TYPE (LoginHelper, login_helper, PARENT_TYPE)
diff --git a/login-helper/login-helper.h b/login-helper/login-helper.h
deleted file mode 100644 (file)
index a81c378..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * LoginHelper
- *
- * Copyright 2004 Sun Microsystems Inc.,
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef LOGIN_HELPER_H_
-#define LOGIN_HELPER_H_
-
-#include <glib.h>
-#include <glib-object.h>
-//#include <login-helper/Accessibility_LoginHelper.h>
-#include <X11/X.h>
-
-G_BEGIN_DECLS
-
-typedef struct _LoginHelper LoginHelper;
-typedef struct _LoginHelperClass LoginHelperClass;
-
-#define LOGIN_HELPER_TYPE        (login_helper_get_type ())
-#define LOGIN_HELPER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), LOGIN_HELPER_TYPE, LoginHelper))
-#define LOGIN_HELPER_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), LOGIN_HELPER_TYPE, LoginHelperClass))
-#define LOGIN_HELPER_GET_CLASS(o)    (G_TYPE_INSTANCE_GET_CLASS((o), LOGIN_HELPER_TYPE, LoginHelperClass))
-#define IS_LOGIN_HELPER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), LOGIN_HELPER_TYPE))
-#define IS_LOGIN_HELPER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), LOGIN_HELPER_TYPE))
-
-struct _LoginHelper {
-  GObject      parent;
-
-};
-
-typedef unsigned long LoginHelperDeviceReqFlags;
-
-#define LOGIN_HELPER_GUI_EVENTS 1
-#define LOGIN_HELPER_CORE_KEYBOARD 2
-#define LOGIN_HELPER_CORE_POINTER 4
-#define LOGIN_HELPER_EXT_INPUT 8
-#define LOGIN_HELPER_POST_WINDOWS 16
-#define LOGIN_HELPER_AUDIO_OUT 32
-#define LOGIN_HELPER_AUDIO_IN 64
-#define LOGIN_HELPER_NETWORK 128
-#define LOGIN_HELPER_LOCALHOST 256 
-#define LOGIN_HELPER_SERIAL_OUT 512
-#define LOGIN_HELPER_SERIAL_IN 1024
-#define LOGIN_HELPER_LAST_DEFINED 2048
-
-struct _LoginHelperClass {
-  GObjectClass parent_class;
-
-  gboolean (*set_safe) (LoginHelper *helper, gboolean safe);
-  LoginHelperDeviceReqFlags (*get_device_reqs) (LoginHelper *helper);
-  Window*  (*get_raise_windows) (LoginHelper *helper); 
-};
-
-GType        login_helper_get_type (void) G_GNUC_CONST;
-LoginHelper *login_helper_new      (void);
-
-G_END_DECLS
-
-#endif /* LOGIN_HELPER_H */
diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am
new file mode 100644 (file)
index 0000000..cabb2b3
--- /dev/null
@@ -0,0 +1,5 @@
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = cspi-1.0.pc
+
+EXTRA_DIST = cspi-1.0.pc.in \
+            cspi-1.0-uninstalled.pc.in
similarity index 77%
rename from cspi-1.0-uninstalled.pc.in
rename to pkgconfig/cspi-1.0-uninstalled.pc.in
index ea8fe1a..74a1cde 100644 (file)
@@ -1,8 +1,6 @@
-idldir=${pc_top_builddir}/${pcfiledir}/idl
-
 Name: cspi (Uninstalled)
 Description: Accessibility Technology software simple client library
 Name: cspi (Uninstalled)
 Description: Accessibility Technology software simple client library
-Requires: libspi-1.0
+Requires: dbind-0.1
 Version: @VERSION@
 Libs: ${pc_top_builddir}/${pcfiledir}/cspi/libcspi.la
 Cflags: -I${pc_top_builddir}/${pcfiledir} @X_CFLAGS@
 Version: @VERSION@
 Libs: ${pc_top_builddir}/${pcfiledir}/cspi/libcspi.la
 Cflags: -I${pc_top_builddir}/${pcfiledir} @X_CFLAGS@
similarity index 92%
rename from cspi-1.0.pc.in
rename to pkgconfig/cspi-1.0.pc.in
index c6b3320..7c549be 100644 (file)
@@ -5,7 +5,7 @@ includedir=@includedir@
 
 Name: cspi
 Description: Accessibility Technology software simple client library
 
 Name: cspi
 Description: Accessibility Technology software simple client library
-Requires: libspi-1.0
+Requires: dbind-0.1
 Version: @VERSION@
 Libs: -L${libdir} -lcspi
 Cflags: -I${includedir}/at-spi-1.0 @X_CFLAGS@
 Version: @VERSION@
 Libs: -L${libdir} -lcspi
 Cflags: -I${includedir}/at-spi-1.0 @X_CFLAGS@
diff --git a/registryd/Makefile.am b/registryd/Makefile.am
deleted file mode 100644 (file)
index 19b745b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-libexec_PROGRAMS = at-spi-registryd
-
-at_spi_registryd_CFLAGS = $(DBUS_GLIB_CFLAGS)  \
-                         $(GOBJ_CFLAGS)        \
-                         $(ATK_CFLAGS)         \
-                         $(GDK_CFLAGS)         \
-                         -I$(top_srcdir)       \
-                         -DATSPI_INTROSPECTION_PATH=\"$(pkgdatadir)/$(DEFAULT_ATSPI_INTROSPECTION_PATH)\"
-
-at_spi_registryd_LDADD = $(DBUS_GLIB_LIBS)     \
-                        $(GOBJ_CFLAGS)         \
-                        $(ATK_LIBS)            \
-                        $(GDK_LIBS)            \
-                        $(X_LIBS)              \
-                        $(XTST_LIBS)           \
-                        $(XEVIE_LIBS)          \
-                        $(top_builddir)/droute/libdroute.la\
-                        $(top_builddir)/spi-common/libspicommon.la
-
-at_spi_registryd_SOURCES =     \
-       registry-main.c         \
-       registry.c              \
-       registry.h              \
-       deviceeventcontroller.c \
-       deviceeventcontroller.h \
-       reentrant-list.c        \
-       reentrant-list.h        \
-       ucs2keysym.c
diff --git a/registryd/deviceeventcontroller.c b/registryd/deviceeventcontroller.c
deleted file mode 100644 (file)
index 8049ab0..0000000
+++ /dev/null
@@ -1,2783 +0,0 @@
-/* AT-SPI - Assistive Technology Service Provider Interface
- *
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2003 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* deviceeventcontroller.c: implement the DeviceEventController interface */
-
-#include <config.h>
-
-#undef  SPI_XKB_DEBUG
-#undef  SPI_DEBUG
-#undef  SPI_KEYEVENT_DEBUG
-
-#include <string.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <sys/time.h>
-
-#include <X11/Xlib.h>
-#include <X11/extensions/XTest.h>
-#include <X11/XKBlib.h>
-#define XK_MISCELLANY
-#define XK_LATIN1
-#include <X11/keysymdef.h>
-
-#ifdef HAVE_XEVIE
-#include <X11/Xproto.h>
-#include <X11/X.h>
-#include <X11/extensions/Xevie.h>
-#endif /* HAVE_XEVIE */
-
-#include <glib.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h> /* TODO: hide dependency (wrap in single porting file) */
-#include <gdk/gdkkeysyms.h>
-#include <gdk/gdkwindow.h>
-
-#include <spi-common/keymasks.h>
-#include <spi-common/spi-dbus.h>
-#include <spi-common/spi-types.h>
-
-#include <droute/droute.h>
-
-#include "deviceeventcontroller.h"
-#include "reentrant-list.h"
-
-KeySym ucs2keysym (long ucs);
-long keysym2ucs(KeySym keysym); 
-
-#define CHECK_RELEASE_DELAY 20
-#define BIT(c, x)       (c[x/8]&(1<<(x%8)))
-static guint check_release_handler = 0;
-static Accessibility_DeviceEvent pressed_event;
-static SpiDEController *saved_controller; 
-static void wait_for_release_event (XEvent *event, SpiDEController *controller);
-
-/* Our parent Gtk object type */
-#define PARENT_TYPE G_TYPE_OBJECT
-
-/* A pointer to our parent object class */
-static int spi_error_code = 0;
-static GdkPoint last_mouse_pos_static = {0, 0}; 
-static GdkPoint *last_mouse_pos = &last_mouse_pos_static;
-static unsigned int mouse_mask_state = 0;
-static unsigned int mouse_button_mask =
-  Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask;
-static unsigned int key_modifier_mask =
-  Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | ShiftMask | LockMask | ControlMask | SPI_KEYMASK_NUMLOCK;
-static unsigned int _numlock_physical_mask = Mod2Mask; /* a guess, will be reset */
-
-static GQuark spi_dec_private_quark = 0;
-static XModifierKeymap* xmkeymap = NULL;
-
-static int (*x_default_error_handler) (Display *display, XErrorEvent *error_event);
-
-typedef enum {
-  SPI_DEVICE_TYPE_KBD,
-  SPI_DEVICE_TYPE_MOUSE,
-  SPI_DEVICE_TYPE_LAST_DEFINED
-} SpiDeviceTypeCategory;
-
-typedef struct {
-  guint                             ref_count : 30;
-  guint                             pending_add : 1;
-  guint                             pending_remove : 1;
-
-  Accessibility_ControllerEventMask mod_mask;
-  dbus_uint32_t               key_val;  /* KeyCode */
-} DEControllerGrabMask;
-
-typedef struct {
-  char *bus_name;
-  char *path;
-  SpiDeviceTypeCategory type;
-  gulong types;
-} DEControllerListener;
-
-typedef struct {
-  DEControllerListener listener;
-
- GSList *keys;
-  Accessibility_ControllerEventMask mask;
-  Accessibility_EventListenerMode  *mode;      
-} DEControllerKeyListener;
-
-typedef struct {
-  unsigned int last_press_keycode;
-  unsigned int last_release_keycode;
-  struct timeval last_press_time;
-  struct timeval last_release_time;
-  int have_xkb;
-  int xkb_major_extension_opcode;
-  int xkb_base_event_code;
-  int xkb_base_error_code;
-  unsigned int xkb_latch_mask;
-  unsigned int pending_xkb_mod_relatch_mask;
-  XkbDescPtr xkb_desc;
-  KeyCode reserved_keycode;
-  KeySym reserved_keysym;
-  guint  reserved_reset_timeout;
-} DEControllerPrivateData;
-
-static void     spi_controller_register_with_devices          (SpiDEController           *controller);
-static gboolean spi_controller_update_key_grabs               (SpiDEController           *controller,
-                                                              Accessibility_DeviceEvent *recv);
-static gboolean spi_controller_register_device_listener       (SpiDEController           *controller,
-                                                              DEControllerListener      *l);
-static gboolean spi_device_event_controller_forward_key_event (SpiDEController           *controller,
-                                                              const XEvent              *event);
-static void     spi_controller_deregister_device_listener (SpiDEController            *controller,
-                                                          DEControllerListener *listener);
-static void     spi_deregister_controller_key_listener (SpiDEController         *controller,
-                                                       DEControllerKeyListener *key_listener);
-static gboolean spi_controller_notify_mouselisteners (SpiDEController                 *controller,
-                                                     const Accessibility_DeviceEvent *event);
-
-static gboolean spi_eventtype_seq_contains_event (dbus_uint32_t types,
-                                                 const Accessibility_DeviceEvent *event);
-static gboolean spi_clear_error_state (void);
-static gboolean spi_dec_poll_mouse_moved (gpointer data);
-static gboolean spi_dec_poll_mouse_moving (gpointer data);
-static gboolean spi_dec_poll_mouse_idle (gpointer data);
-
-#define spi_get_display() GDK_DISPLAY()
-
-G_DEFINE_TYPE(SpiDEController, spi_device_event_controller, G_TYPE_OBJECT)
-
-/* Private methods */
-static dbus_bool_t
-spi_dbus_add_disconnect_match (DBusConnection *bus, const char *name)
-{
-  char *match = g_strdup_printf ("interface=%s,member=NameOwnerChanged,arg0=%s", DBUS_INTERFACE_DBUS, name);
-  if (match)
-  {
-    DBusError error;
-    dbus_error_init (&error);
-    dbus_bus_add_match (bus, match, &error);
-    g_free (match);
-    return !dbus_error_is_set (&error);
-  }
-  else return FALSE;
-}
-
-static dbus_bool_t
-spi_dbus_remove_disconnect_match (DBusConnection *bus, const char *name)
-{
-  char *match = g_strdup_printf ("interface=%s,member=NameOwnerChanged,arg0=%s", DBUS_INTERFACE_DBUS, name);
-  if (match)
-  {
-    DBusError error;
-    dbus_error_init (&error);
-    dbus_bus_remove_match (bus, match, &error);
-    g_free (match);
-    return !dbus_error_is_set (&error);
-  }
-  else return FALSE;
-}
-
-static unsigned int
-keysym_mod_mask (KeySym keysym, KeyCode keycode)
-{
-       /* we really should use XKB and look directly at the keymap */
-       /* this is very inelegant */
-       Display *display = spi_get_display ();
-       unsigned int mods_rtn = 0;
-       unsigned int retval = 0;
-       KeySym sym_rtn;
-
-       if (XkbLookupKeySym (display, keycode, 0, &mods_rtn, &sym_rtn) &&
-           (sym_rtn == keysym)) {
-               retval = 0;
-       }
-       else if (XkbLookupKeySym (display, keycode, ShiftMask, &mods_rtn, &sym_rtn) &&
-                (sym_rtn == keysym)) {
-               retval = ShiftMask;
-       }
-       else if (XkbLookupKeySym (display, keycode, Mod2Mask, &mods_rtn, &sym_rtn) &&
-                (sym_rtn == keysym)) {
-               retval = Mod2Mask;
-       }
-       else if (XkbLookupKeySym (display, keycode, Mod3Mask, &mods_rtn, &sym_rtn) &&
-                (sym_rtn == keysym)) {
-               retval = Mod3Mask;
-       }
-       else if (XkbLookupKeySym (display, keycode, 
-                                 ShiftMask | Mod2Mask, &mods_rtn, &sym_rtn) &&
-                (sym_rtn == keysym)) {
-               retval = (Mod2Mask | ShiftMask);
-       }
-       else if (XkbLookupKeySym (display, keycode, 
-                                 ShiftMask | Mod3Mask, &mods_rtn, &sym_rtn) &&
-                (sym_rtn == keysym)) {
-               retval = (Mod3Mask | ShiftMask);
-       }
-       else if (XkbLookupKeySym (display, keycode, 
-                                 ShiftMask | Mod4Mask, &mods_rtn, &sym_rtn) &&
-                (sym_rtn == keysym)) {
-               retval = (Mod4Mask | ShiftMask);
-       }
-       else
-               retval = 0xFFFF;
-       return retval;
-}
-
-static gboolean
-spi_dec_replace_map_keysym (DEControllerPrivateData *priv, KeyCode keycode, KeySym keysym)
-{
-#ifdef HAVE_XKB
-  Display *dpy = spi_get_display ();
-  XkbDescPtr desc;
-  if (!(desc = XkbGetMap (dpy, XkbAllMapComponentsMask, XkbUseCoreKbd)))
-    {
-      fprintf (stderr, "ERROR getting map\n");
-    }
-  XFlush (dpy);
-  XSync (dpy, False);
-  if (desc && desc->map)
-    {
-      gint offset = desc->map->key_sym_map[keycode].offset;
-      desc->map->syms[offset] = keysym; 
-    }
-  else
-    {
-      fprintf (stderr, "Error changing key map: empty server structure\n");
-    }          
-  XkbSetMap (dpy, XkbAllMapComponentsMask, desc);
-  /**
-   *  FIXME: the use of XkbChangeMap, and the reuse of the priv->xkb_desc structure, 
-   * would be far preferable.
-   * HOWEVER it does not seem to work using XFree 4.3. 
-   **/
-  /*       XkbChangeMap (dpy, priv->xkb_desc, priv->changes); */
-  XFlush (dpy);
-  XSync (dpy, False);
-  XkbFreeKeyboard (desc, 0, TRUE);
-
-  return TRUE;
-#else
-  return FALSE;
-#endif
-}
-
-static gboolean
-spi_dec_reset_reserved (gpointer data)
-{
-  DEControllerPrivateData *priv = data;
-  spi_dec_replace_map_keysym (priv, priv->reserved_keycode, priv->reserved_keysym);
-  priv->reserved_reset_timeout = 0;
-  return FALSE;
-}
-
-static KeyCode
-keycode_for_keysym (SpiDEController *controller, long keysym, unsigned int *modmask)
-{
-       KeyCode keycode = 0;
-       keycode = XKeysymToKeycode (spi_get_display (), (KeySym) keysym);
-       if (!keycode) 
-       {
-               DEControllerPrivateData *priv = (DEControllerPrivateData *)
-                       g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-               /* if there's no keycode available, fix it */
-               if (spi_dec_replace_map_keysym (priv, priv->reserved_keycode, keysym))
-               {
-                       keycode = priv->reserved_keycode;
-                       /* 
-                        * queue a timer to restore the old keycode.  Ugly, but required 
-                        * due to races / asynchronous X delivery.   
-                        * Long-term fix is to extend the X keymap here instead of replace entries.
-                        */
-                       priv->reserved_reset_timeout = g_timeout_add (500, spi_dec_reset_reserved, priv);
-               }               
-               *modmask = 0;
-               return keycode;
-       }
-       if (modmask) 
-               *modmask = keysym_mod_mask (keysym, keycode);
-       return keycode;
-}
-
-static DEControllerGrabMask *
-spi_grab_mask_clone (DEControllerGrabMask *grab_mask)
-{
-  DEControllerGrabMask *clone = g_new (DEControllerGrabMask, 1);
-
-  memcpy (clone, grab_mask, sizeof (DEControllerGrabMask));
-
-  clone->ref_count = 1;
-  clone->pending_add = TRUE;
-  clone->pending_remove = FALSE;
-
-  return clone;
-}
-
-static void
-spi_grab_mask_free (DEControllerGrabMask *grab_mask)
-{
-  g_free (grab_mask);
-}
-
-static gint
-spi_grab_mask_compare_values (gconstpointer p1, gconstpointer p2)
-{
-  DEControllerGrabMask *l1 = (DEControllerGrabMask *) p1;
-  DEControllerGrabMask *l2 = (DEControllerGrabMask *) p2;
-
-  if (p1 == p2)
-    {
-      return 0;
-    }
-  else
-    { 
-      return ((l1->mod_mask != l2->mod_mask) || (l1->key_val != l2->key_val));
-    }
-}
-
-static void
-spi_dec_set_unlatch_pending (SpiDEController *controller, unsigned mask)
-{
-  DEControllerPrivateData *priv = 
-    g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-#ifdef SPI_XKB_DEBUG
-  if (priv->xkb_latch_mask) fprintf (stderr, "unlatch pending! %x\n", 
-                                    priv->xkb_latch_mask);
-#endif
-  priv->pending_xkb_mod_relatch_mask |= priv->xkb_latch_mask; 
-}
-static void
-spi_dec_clear_unlatch_pending (SpiDEController *controller)
-{
-  DEControllerPrivateData *priv = 
-    g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-  priv->xkb_latch_mask = 0;
-}
-
-static void emit(SpiDEController *controller, const char *interface, const char *name, int a1, int a2)
-{
-  DBusMessage *signal = NULL;
-  DBusMessageIter iter, iter_variant;
-  int nil = 0;
-  const char *minor = "";
-  const char *path = SPI_DBUS_PATH_DESKTOP;
-
-  signal = dbus_message_new_signal (path, interface, name);
-
-  dbus_message_iter_init_append (signal, &iter);
-
-  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &minor);
-  dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &a1);
-  dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &a2);
-  dbus_message_iter_open_container (&iter, DBUS_TYPE_VARIANT, "i", &iter_variant);
-      dbus_message_iter_append_basic (&iter_variant, DBUS_TYPE_INT32, &nil);
-  dbus_message_iter_close_container (&iter, &iter_variant);
-
-  dbus_connection_send (controller->bus, signal, NULL);
-}
-
-static gboolean
-spi_dec_button_update_and_emit (SpiDEController *controller,
-                               guint mask_return)
-{
-  Accessibility_DeviceEvent mouse_e;
-  gchar event_detail[24];
-  gboolean is_consumed = FALSE;
-
-  if ((mask_return & mouse_button_mask) !=
-      (mouse_mask_state & mouse_button_mask)) 
-    {
-      int button_number = 0;
-      gboolean is_down = False;
-      
-      if (!(mask_return & Button1Mask) &&
-         (mouse_mask_state & Button1Mask)) 
-       {
-         mouse_mask_state &= ~Button1Mask;
-         button_number = 1;
-       } 
-      else if ((mask_return & Button1Mask) &&
-              !(mouse_mask_state & Button1Mask)) 
-       {
-         mouse_mask_state |= Button1Mask;
-         button_number = 1;
-         is_down = True;
-       } 
-      else if (!(mask_return & Button2Mask) &&
-              (mouse_mask_state & Button2Mask)) 
-       {
-         mouse_mask_state &= ~Button2Mask;
-         button_number = 2;
-       } 
-      else if ((mask_return & Button2Mask) &&
-              !(mouse_mask_state & Button2Mask)) 
-       {
-         mouse_mask_state |= Button2Mask;
-         button_number = 2;
-         is_down = True;
-       } 
-      else if (!(mask_return & Button3Mask) &&
-              (mouse_mask_state & Button3Mask)) 
-       {
-         mouse_mask_state &= ~Button3Mask;
-         button_number = 3;
-       } 
-      else if ((mask_return & Button3Mask) &&
-              !(mouse_mask_state & Button3Mask)) 
-       {
-         mouse_mask_state |= Button3Mask;
-         button_number = 3;
-         is_down = True;
-       } 
-      else if (!(mask_return & Button4Mask) &&
-              (mouse_mask_state & Button4Mask)) 
-       {
-         mouse_mask_state &= ~Button4Mask;
-         button_number = 4;
-       } 
-      else if ((mask_return & Button4Mask) &&
-              !(mouse_mask_state & Button4Mask)) 
-       {
-         mouse_mask_state |= Button4Mask;
-         button_number = 4;
-         is_down = True;
-       } 
-      else if (!(mask_return & Button5Mask) &&
-              (mouse_mask_state & Button5Mask)) 
-       {
-         mouse_mask_state &= ~Button5Mask;
-         button_number = 5;
-       }
-      else if ((mask_return & Button5Mask) &&
-              !(mouse_mask_state & Button5Mask)) 
-       {
-         mouse_mask_state |= Button5Mask;
-         button_number = 5;
-         is_down = True;
-       }
-      if (button_number) {
-#ifdef SPI_DEBUG                 
-       fprintf (stderr, "Button %d %s\n",
-                button_number, (is_down) ? "Pressed" : "Released");
-#endif
-       snprintf (event_detail, 22, "%d%c", button_number,
-                 (is_down) ? 'p' : 'r');
-       /* TODO: FIXME distinguish between physical and 
-        * logical buttons 
-        */
-       mouse_e.type      = (is_down) ? 
-         Accessibility_BUTTON_PRESSED_EVENT :
-         Accessibility_BUTTON_RELEASED_EVENT;
-       mouse_e.id        = button_number;
-       mouse_e.hw_code   = button_number;
-       mouse_e.modifiers = (dbus_uint16_t) mouse_mask_state; 
-       mouse_e.timestamp = 0;
-       mouse_e.event_string = "";
-       mouse_e.is_text   = FALSE;
-       is_consumed = 
-         spi_controller_notify_mouselisteners (controller, 
-                                               &mouse_e);
-       if (!is_consumed)
-         {
-           dbus_uint32_t x = last_mouse_pos->x, y = last_mouse_pos->y;
-           emit(controller, SPI_DBUS_INTERFACE_EVENT_MOUSE, "button", x, y);
-         }
-       else
-         spi_dec_set_unlatch_pending (controller, mask_return);
-      }
-      return TRUE;
-    }
-  else
-    {
-      return FALSE;
-    }
-}
-
-
-static guint
-spi_dec_mouse_check (SpiDEController *controller, 
-                    int *x, int *y, gboolean *moved)
-{
-  int win_x_return,win_y_return;
-  unsigned int mask_return;
-  Window root_return, child_return;
-  Display *display = spi_get_display ();
-
-  if (display != NULL)
-    XQueryPointer(display, DefaultRootWindow (display),
-                 &root_return, &child_return,
-                 x, y,
-                 &win_x_return, &win_y_return, &mask_return);
-  /* 
-   * Since many clients grab the pointer, and X goes an automatic
-   * pointer grab on mouse-down, we often must detect mouse button events
-   * by polling rather than via a button grab. 
-   * The while loop (rather than if) is used since it's possible that 
-   * multiple buttons have changed state since we last checked.
-   */
-  if (mask_return != mouse_mask_state) 
-    {
-      while (spi_dec_button_update_and_emit (controller, mask_return));
-    }
-
-  if (*x != last_mouse_pos->x || *y != last_mouse_pos->y) 
-    {
-      // TODO: combine these two signals?
-      dbus_uint32_t ix = *x, iy = *y;
-      emit(controller, SPI_DBUS_INTERFACE_EVENT_MOUSE, "abs", ix, iy);
-      ix -= last_mouse_pos->x;
-      iy -= last_mouse_pos->y;
-      emit(controller, SPI_DBUS_INTERFACE_EVENT_MOUSE, "rel", ix, iy);
-      last_mouse_pos->x = *x;
-      last_mouse_pos->y = *y;
-      *moved = True;
-    }
-  else
-    {
-      *moved = False;
-    }
-
-  return mask_return;
-}
-
-static void
-spi_dec_emit_modifier_event (SpiDEController *controller, guint prev_mask, 
-                            guint current_mask)
-{
-  dbus_uint32_t d1, d2;
-
-#ifdef SPI_XKB_DEBUG
-  fprintf (stderr, "MODIFIER CHANGE EVENT! %x to %x\n", 
-          prev_mask, current_mask);
-#endif
-
-  /* set bits for the virtual modifiers like NUMLOCK */
-  if (prev_mask & _numlock_physical_mask) 
-    prev_mask |= SPI_KEYMASK_NUMLOCK;
-  if (current_mask & _numlock_physical_mask) 
-    current_mask |= SPI_KEYMASK_NUMLOCK;
-
-  d1 = prev_mask & key_modifier_mask;
-  d2 = current_mask & key_modifier_mask;
-      emit(controller, SPI_DBUS_INTERFACE_EVENT_KEYBOARD, "modifiers", d1, d2);
-}
-
-static gboolean
-spi_dec_poll_mouse_moved (gpointer data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(data);
-  int x, y;
-  gboolean moved;
-  guint mask_return;
-
-  mask_return = spi_dec_mouse_check (controller, &x, &y, &moved);
-
-  if ((mask_return & key_modifier_mask) !=
-      (mouse_mask_state & key_modifier_mask)) 
-    {
-      spi_dec_emit_modifier_event (controller, mouse_mask_state, mask_return);
-      mouse_mask_state = mask_return;
-    }
-
-  return moved;
-}
-
-static gboolean
-spi_dec_poll_mouse_idle (gpointer data)
-{
-  if (! spi_dec_poll_mouse_moved (data))
-    return TRUE;
-  else
-    {
-      g_timeout_add (20, spi_dec_poll_mouse_moving, data);         
-      return FALSE;        
-    }
-}
-
-static gboolean
-spi_dec_poll_mouse_moving (gpointer data)
-{
-  if (spi_dec_poll_mouse_moved (data))
-    return TRUE;
-  else
-    {
-      g_timeout_add (100, spi_dec_poll_mouse_idle, data);          
-      return FALSE;
-    }
-}
-
-#ifdef WE_NEED_UGRAB_MOUSE
-static int
-spi_dec_ungrab_mouse (gpointer data)
-{
-       Display *display = spi_get_display ();
-       if (display)
-         {
-           XUngrabButton (spi_get_display (), AnyButton, AnyModifier,
-                          XDefaultRootWindow (spi_get_display ()));
-         }
-       return FALSE;
-}
-#endif
-
-static void
-spi_dec_init_mouse_listener (SpiDEController *dec)
-{
-#ifdef GRAB_BUTTON
-  Display *display = spi_get_display ();
-#endif
-  g_timeout_add (100, spi_dec_poll_mouse_idle, dec);
-
-#ifdef GRAB_BUTTON
-  if (display)
-    {
-      if (XGrabButton (display, AnyButton, AnyModifier,
-                      gdk_x11_get_default_root_xwindow (),
-                      True, ButtonPressMask | ButtonReleaseMask,
-                      GrabModeSync, GrabModeAsync, None, None) != Success) {
-#ifdef SPI_DEBUG
-       fprintf (stderr, "WARNING: could not grab mouse buttons!\n");
-#endif
-       ;
-      }
-      XSync (display, False);
-#ifdef SPI_DEBUG
-      fprintf (stderr, "mouse buttons grabbed\n");
-#endif
-    }
-#endif
-}
-
-/**
- * Eventually we can use this to make the marshalling of mask types
- * more sane, but for now we just use this to detect 
- * the use of 'virtual' masks such as numlock and convert them to
- * system-specific mask values (i.e. ModMask).
- * 
- **/
-static Accessibility_ControllerEventMask
-spi_dec_translate_mask (Accessibility_ControllerEventMask mask)
-{
-  Accessibility_ControllerEventMask tmp_mask;
-  gboolean has_numlock;
-
-  has_numlock = (mask & SPI_KEYMASK_NUMLOCK);
-  tmp_mask = mask;
-  if (has_numlock)
-    {
-      tmp_mask = mask ^ SPI_KEYMASK_NUMLOCK;
-      tmp_mask |= _numlock_physical_mask;
-    }
-  return tmp_mask;
-}
-
-static DEControllerKeyListener *
-spi_dec_key_listener_new (const char *bus_name,
-                         const char *path,
-                         GSList *keys,
-                         const Accessibility_ControllerEventMask mask,
-                         const dbus_uint32_t types,
-                         const Accessibility_EventListenerMode  *mode)
-{
-  DEControllerKeyListener *key_listener = g_new0 (DEControllerKeyListener, 1);
-  key_listener->listener.bus_name = g_strdup(bus_name);
-  key_listener->listener.path = g_strdup(path);
-  key_listener->listener.type = SPI_DEVICE_TYPE_KBD;
-  key_listener->keys = keys;
-  key_listener->mask = spi_dec_translate_mask (mask);
-  key_listener->listener.types = types;
-  if (mode)
-  {
-    key_listener->mode = (Accessibility_EventListenerMode *) g_malloc(sizeof(Accessibility_EventListenerMode));
-    memcpy(key_listener->mode, mode, sizeof(*mode));
-  }
-  else
-    key_listener->mode = NULL;
-
-#ifdef SPI_DEBUG
-  g_print ("new listener, with mask %x, is_global %d, keys %p (%d)\n",
-          (unsigned int) key_listener->mask,
-           (int) (mode ? mode->global : 0),
-          (void *) key_listener->keys,
-          (int) (key_listener->keys ? g_slist_length(key_listener->keys) : 0));
-#endif
-
-  return key_listener; 
-}
-
-static DEControllerListener *
-spi_dec_listener_new (const char *bus_name,
-                     const char *path,
-                     dbus_uint32_t types)
-{
-  DEControllerListener *listener = g_new0 (DEControllerListener, 1);
-  listener->bus_name = g_strdup(bus_name);
-  listener->path = g_strdup(path);
-  listener->type = SPI_DEVICE_TYPE_MOUSE;
-  listener->types = types;
-  return listener;     
-}
-
-static DEControllerListener *
-spi_listener_clone (DEControllerListener *listener)
-{
-  DEControllerListener *clone = g_new0 (DEControllerListener, 1);
-  clone->bus_name = g_strdup (listener->bus_name);
-  clone->path = g_strdup (listener->path);
-  clone->type = listener->type;
-  clone->types = listener->types;
-  return clone;
-}
-
-static GSList *keylist_clone (GSList *s)
-{
-  GSList *d = NULL;
-  GSList *l;
-
-  for (l = s; l; l = g_slist_next(l))
-  {
-    Accessibility_KeyDefinition *kd = (Accessibility_KeyDefinition *)g_malloc(sizeof(Accessibility_KeyDefinition));
-    if (kd)
-    {
-      Accessibility_KeyDefinition *kds = (Accessibility_KeyDefinition *)l->data;
-      kd->keycode = kds->keycode;
-      kd->keysym = kds->keysym;
-      kd->keystring = g_strdup(kds->keystring);
-      d = g_slist_append(d, kd);
-    }
-  }
-  return d;
-}
-
-static DEControllerKeyListener *
-spi_key_listener_clone (DEControllerKeyListener *key_listener)
-{
-  DEControllerKeyListener *clone = g_new0 (DEControllerKeyListener, 1);
-  clone->listener.bus_name = g_strdup (key_listener->listener.bus_name);
-  clone->listener.path = g_strdup (key_listener->listener.path);
-  clone->listener.type = SPI_DEVICE_TYPE_KBD;
-  clone->keys = keylist_clone (key_listener->keys);
-  clone->mask = key_listener->mask;
-  clone->listener.types = key_listener->listener.types;
-  if (key_listener->mode)
-  {
-    clone->mode = (Accessibility_EventListenerMode *)g_malloc(sizeof(Accessibility_EventListenerMode));
-    if (clone->mode) memcpy(clone->mode, key_listener->mode, sizeof(Accessibility_EventListenerMode));
-  }
-  else
-    clone->mode = NULL;
-  return clone;
-}
-
-static void keylist_free(GSList *keys)
-{
-  GSList *l;
-
-  for (l = keys; l; l = g_slist_next(l))
-  {
-    Accessibility_KeyDefinition *kd = (Accessibility_KeyDefinition *)l->data;
-    g_free(kd->keystring);
-    g_free(kd);
-  }
-  g_slist_free (keys);
-}
-
-static void
-spi_key_listener_data_free (DEControllerKeyListener *key_listener)
-{
-  keylist_free(key_listener->keys);
-  if (key_listener->mode) g_free(key_listener->mode);
-  g_free (key_listener);
-}
-
-static void
-spi_key_listener_clone_free (DEControllerKeyListener *clone)
-{
-  spi_key_listener_data_free (clone);
-}
-
-static void
-spi_listener_clone_free (DEControllerListener *clone)
-{
-  g_free (clone->path);
-  g_free (clone->bus_name);
-  g_free (clone);
-}
-
-static void
-spi_dec_listener_free (DEControllerListener    *listener)
-{
-  g_free (listener->bus_name);
-  g_free (listener->path);
-  if (listener->type == SPI_DEVICE_TYPE_KBD) 
-    spi_key_listener_data_free ((DEControllerKeyListener *) listener);
-}
-
-static void
-_register_keygrab (SpiDEController      *controller,
-                  DEControllerGrabMask *grab_mask)
-{
-  GList *l;
-
-  l = g_list_find_custom (controller->keygrabs_list, grab_mask,
-                         spi_grab_mask_compare_values);
-  if (l)
-    {
-      DEControllerGrabMask *cur_mask = l->data;
-
-      cur_mask->ref_count++;
-      if (cur_mask->pending_remove)
-        {
-          cur_mask->pending_remove = FALSE;
-       }
-    }
-  else
-    {
-      controller->keygrabs_list =
-        g_list_prepend (controller->keygrabs_list,
-                       spi_grab_mask_clone (grab_mask));
-    }
-}
-
-static void
-_deregister_keygrab (SpiDEController      *controller,
-                    DEControllerGrabMask *grab_mask)
-{
-  GList *l;
-
-  l = g_list_find_custom (controller->keygrabs_list, grab_mask,
-                         spi_grab_mask_compare_values);
-
-  if (l)
-    {
-      DEControllerGrabMask *cur_mask = l->data;
-
-      cur_mask->ref_count--;
-      if (cur_mask->ref_count <= 0)
-        {
-          cur_mask->pending_remove = TRUE;
-       }
-    }
-}
-
-static void
-handle_keygrab (SpiDEController         *controller,
-               DEControllerKeyListener *key_listener,
-               void                   (*process_cb) (SpiDEController *controller,
-                                                     DEControllerGrabMask *grab_mask))
-{
-  DEControllerGrabMask grab_mask = { 0 };
-
-  grab_mask.mod_mask = key_listener->mask;
-  if (g_slist_length (key_listener->keys) == 0) /* special case means AnyKey/AllKeys */
-    {
-      grab_mask.key_val = AnyKey;
-#ifdef SPI_DEBUG
-      fprintf (stderr, "AnyKey grab!");
-#endif
-      process_cb (controller, &grab_mask);
-    }
-  else
-    {
-      GSList *l;
-
-      for (l = key_listener->keys; l; l = g_slist_next(l))
-        {
-         Accessibility_KeyDefinition *keydef = l->data;
-         long int key_val = keydef->keysym;
-         /* X Grabs require keycodes, not keysyms */
-         if (keydef->keystring && keydef->keystring[0])
-           {
-             key_val = XStringToKeysym(keydef->keystring);                 
-           }
-         if (key_val > 0)
-           {
-             key_val = XKeysymToKeycode (spi_get_display (), (KeySym) key_val);
-           }
-         else
-           {
-             key_val = keydef->keycode;
-           }
-         grab_mask.key_val = key_val;
-         process_cb (controller, &grab_mask);
-       }
-    }
-}
-
-static gboolean
-spi_controller_register_global_keygrabs (SpiDEController         *controller,
-                                        DEControllerKeyListener *key_listener)
-{
-  handle_keygrab (controller, key_listener, _register_keygrab);
-  if (controller->xevie_display == NULL)
-    return spi_controller_update_key_grabs (controller, NULL);
-  else
-    return TRUE;
-}
-
-static void
-spi_controller_deregister_global_keygrabs (SpiDEController         *controller,
-                                          DEControllerKeyListener *key_listener)
-{
-  handle_keygrab (controller, key_listener, _deregister_keygrab);
-  if (controller->xevie_display == NULL)
-    spi_controller_update_key_grabs (controller, NULL);
-}
-
-static gboolean
-spi_controller_register_device_listener (SpiDEController      *controller,
-                                        DEControllerListener *listener)
-{
-  DEControllerKeyListener *key_listener;
-  
-  switch (listener->type) {
-  case SPI_DEVICE_TYPE_KBD:
-      key_listener = (DEControllerKeyListener *) listener;
-
-      controller->key_listeners = g_list_prepend (controller->key_listeners,
-                                                 key_listener);
-      spi_dbus_add_disconnect_match (controller->bus, key_listener->listener.bus_name);
-      if (key_listener->mode->global)
-        {
-         return spi_controller_register_global_keygrabs (controller, key_listener);    
-       }
-      else
-             return TRUE;
-      break;
-  case SPI_DEVICE_TYPE_MOUSE:
-      controller->mouse_listeners = g_list_prepend (controller->mouse_listeners, listener);
-      spi_dbus_add_disconnect_match (controller->bus, listener->bus_name);
-      break;
-  default:
-      break;
-  }
-  return FALSE;
-}
-
-static gboolean
-Accessibility_DeviceEventListener_notifyEvent(SpiDEController *controller,
-                                              SpiRegistry *registry,
-                                              DEControllerListener *listener,
-                                              const Accessibility_DeviceEvent *key_event)
-{
-  DBusMessage *message = dbus_message_new_method_call(listener->bus_name,
-                                                      listener->path,
-                                                      SPI_DBUS_INTERFACE_DEVICE_EVENT_LISTENER,
-                                                      "notifyEvent");
-  DBusError error;
-  dbus_bool_t consumed = FALSE;
-
-  dbus_error_init(&error);
-  if (spi_dbus_marshal_deviceEvent(message, key_event))
-  {
-    // TODO: Evaluate performance: perhaps rework this whole architecture
-    // to avoid blocking calls
-    DBusMessage *reply = dbus_connection_send_with_reply_and_block(controller->bus, message, 1000, &error);
-    if (reply)
-    {
-      DBusError error;
-      dbus_error_init(&error);
-      dbus_message_get_args(reply, &error, DBUS_TYPE_BOOLEAN, &consumed, DBUS_TYPE_INVALID);
-      dbus_message_unref(reply);
-    }
-  }
-  dbus_message_unref(message);
-  return consumed;
-}
-
-static gboolean
-spi_controller_notify_mouselisteners (SpiDEController                 *controller,
-                                     const Accessibility_DeviceEvent *event)
-{
-  GList   *l;
-  GSList  *notify = NULL, *l2;
-  GList  **listeners = &controller->mouse_listeners;
-  gboolean is_consumed;
-#ifdef SPI_KEYEVENT_DEBUG
-  gboolean found = FALSE;
-#endif
-  if (!listeners)
-    {
-      return FALSE;
-    }
-
-  for (l = *listeners; l; l = l->next)
-    {
-       DEControllerListener *listener = l->data;
-
-       if (spi_eventtype_seq_contains_event (listener->types, event))
-         {
-          /* we clone (don't dup) the listener, to avoid refcount inc. */
-          notify = g_slist_prepend (notify,
-                                    spi_listener_clone (listener));
-#ifdef SPI_KEYEVENT_DEBUG
-           found = TRUE;
-#endif
-         }
-    }
-
-#ifdef SPI_KEYEVENT_DEBUG
-  if (!found)
-    {
-      g_print ("no match for event\n");
-    }
-#endif
-
-  is_consumed = FALSE;
-  for (l2 = notify; l2 && !is_consumed; l2 = l2->next)
-    {
-      DEControllerListener *listener = l2->data;
-
-      is_consumed = Accessibility_DeviceEventListener_notifyEvent (controller, controller->registry, listener, event);
-
-      spi_listener_clone_free ((DEControllerListener *) l2->data);
-    }
-
-  for (; l2; l2 = l2->next)
-    {
-      DEControllerListener *listener = l2->data;
-      spi_listener_clone_free (listener);
-      /* clone doesn't have its own ref, so don't use spi_device_listener_free */
-    }
-
-  g_slist_free (notify);
-
-#ifdef SPI_DEBUG
-  if (is_consumed) g_message ("consumed\n");
-#endif
-  return is_consumed;
-}
-
-static void
-spi_device_event_controller_forward_mouse_event (SpiDEController *controller,
-                                                XEvent *xevent)
-{
-  Accessibility_DeviceEvent mouse_e;
-  gchar event_detail[24];
-  gboolean is_consumed = FALSE;
-  gboolean xkb_mod_unlatch_occurred;
-  XButtonEvent *xbutton_event = (XButtonEvent *) xevent;
-  dbus_uint32_t ix, iy;
-
-  int button = xbutton_event->button;
-  
-  unsigned int mouse_button_state = xbutton_event->state;
-
-  switch (button)
-    {
-    case 1:
-           mouse_button_state |= Button1Mask;
-           break;
-    case 2:
-           mouse_button_state |= Button2Mask;
-           break;
-    case 3:
-           mouse_button_state |= Button3Mask;
-           break;
-    case 4:
-           mouse_button_state |= Button4Mask;
-           break;
-    case 5:
-           mouse_button_state |= Button5Mask;
-           break;
-    }
-
-  last_mouse_pos->x = ((XButtonEvent *) xevent)->x_root;
-  last_mouse_pos->y = ((XButtonEvent *) xevent)->y_root;
-
-#ifdef SPI_DEBUG  
-  fprintf (stderr, "mouse button %d %s (%x)\n",
-          xbutton_event->button, 
-          (xevent->type == ButtonPress) ? "Press" : "Release",
-          mouse_button_state);
-#endif
-  snprintf (event_detail, 22, "%d%c", button,
-           (xevent->type == ButtonPress) ? 'p' : 'r');
-
-  /* TODO: FIXME distinguish between physical and logical buttons */
-  mouse_e.type      = (xevent->type == ButtonPress) ? 
-                      Accessibility_BUTTON_PRESSED_EVENT :
-                      Accessibility_BUTTON_RELEASED_EVENT;
-  mouse_e.id        = button;
-  mouse_e.hw_code   = button;
-  mouse_e.modifiers = (dbus_uint16_t) xbutton_event->state;
-  mouse_e.timestamp = (dbus_uint32_t) xbutton_event->time;
-  mouse_e.event_string = "";
-  mouse_e.is_text   = FALSE;
-  if ((mouse_button_state & mouse_button_mask) != 
-       (mouse_mask_state & mouse_button_mask))
-    { 
-      if ((mouse_mask_state & key_modifier_mask) !=
-         (mouse_button_state & key_modifier_mask))
-       spi_dec_emit_modifier_event (controller, 
-                                    mouse_mask_state, mouse_button_state);
-      mouse_mask_state = mouse_button_state;
-      is_consumed = 
-       spi_controller_notify_mouselisteners (controller, &mouse_e);
-      ix = last_mouse_pos->x;
-      iy = last_mouse_pos->y;
-      /* TODO - Work out which part of the spec this emit is fulfilling */
-      //emit(controller, SPI_DBUS_INTERFACE_EVENT_MOUSE, "button", event_detail, ix, iy);
-    }
-
-  xkb_mod_unlatch_occurred = (xevent->type == ButtonPress ||
-                             xevent->type == ButtonRelease);
-  
-  /* if client wants to consume this event, and XKB latch state was
-   *   unset by this button event, we reset it
-   */
-  if (is_consumed && xkb_mod_unlatch_occurred)
-    spi_dec_set_unlatch_pending (controller, mouse_mask_state);
-  
-  XAllowEvents (spi_get_display (),
-               (is_consumed) ? SyncPointer : ReplayPointer,
-               CurrentTime);
-}
-
-static GdkFilterReturn
-global_filter_fn (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
-{
-  XEvent *xevent = gdk_xevent;
-  SpiDEController *controller;
-  DEControllerPrivateData *priv;
-  Display *display = spi_get_display ();
-  controller = SPI_DEVICE_EVENT_CONTROLLER (data);
-  priv = (DEControllerPrivateData *)
-         g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);  
-
-  if (xevent->type == MappingNotify)
-    xmkeymap = NULL;
-
-  if (xevent->type == KeyPress || xevent->type == KeyRelease)
-    {
-      if (controller->xevie_display == NULL)
-        {
-          gboolean is_consumed;
-
-          is_consumed =
-            spi_device_event_controller_forward_key_event (controller, xevent);
-
-          if (is_consumed)
-            {
-              int n_events;
-              int i;
-              XEvent next_event;
-              n_events = XPending (display);
-
-#ifdef SPI_KEYEVENT_DEBUG
-              g_print ("Number of events pending: %d\n", n_events);
-#endif
-              for (i = 0; i < n_events; i++)
-                {
-                  XNextEvent (display, &next_event);
-                 if (next_event.type != KeyPress &&
-                     next_event.type != KeyRelease)
-                       g_warning ("Unexpected event type %d in queue", next_event.type);
-                 }
-
-              XAllowEvents (display, AsyncKeyboard, CurrentTime);
-              if (n_events)
-                XUngrabKeyboard (display, CurrentTime);
-            }
-          else
-            {
-              if (xevent->type == KeyPress)
-                wait_for_release_event (xevent, controller);
-              XAllowEvents (display, ReplayKeyboard, CurrentTime);
-            }
-        }
-
-      return GDK_FILTER_CONTINUE;
-    }
-  if (xevent->type == ButtonPress || xevent->type == ButtonRelease)
-    {
-      spi_device_event_controller_forward_mouse_event (controller, xevent);
-    }
-  if (xevent->type == priv->xkb_base_event_code)
-    {
-      XkbAnyEvent * xkb_ev = (XkbAnyEvent *) xevent;
-      /* ugly but probably necessary...*/
-      XSynchronize (display, TRUE);
-
-      if (xkb_ev->xkb_type == XkbStateNotify)
-        {
-         XkbStateNotifyEvent *xkb_snev =
-                 (XkbStateNotifyEvent *) xkb_ev;
-         /* check the mouse, to catch mouse events grabbed by
-          * another client; in case we should revert this XKB delatch 
-          */
-         if (!priv->pending_xkb_mod_relatch_mask)
-           {
-             int x, y;
-             gboolean moved;
-             spi_dec_mouse_check (controller, &x, &y, &moved);
-           }
-         /* we check again, since the previous call may have 
-            changed this flag */
-         if (priv->pending_xkb_mod_relatch_mask)
-           {
-             unsigned int feedback_mask;
-#ifdef SPI_XKB_DEBUG
-             fprintf (stderr, "relatching %x\n",
-                      priv->pending_xkb_mod_relatch_mask);
-#endif
-             /* temporarily turn off the latch bell, if it's on */
-             XkbGetControls (display,
-                             XkbAccessXFeedbackMask,
-                             priv->xkb_desc);
-             feedback_mask = priv->xkb_desc->ctrls->ax_options;
-             if (feedback_mask & XkbAX_StickyKeysFBMask)
-             {
-               XkbControlsChangesRec changes = {XkbAccessXFeedbackMask,
-                                                0, False};      
-               priv->xkb_desc->ctrls->ax_options
-                             &= ~(XkbAX_StickyKeysFBMask);
-               XkbChangeControls (display, priv->xkb_desc, &changes);
-             }
-             /* TODO: account for lock as well as latch */
-             XkbLatchModifiers (display,
-                                XkbUseCoreKbd,
-                                priv->pending_xkb_mod_relatch_mask,
-                                priv->pending_xkb_mod_relatch_mask);
-             if (feedback_mask & XkbAX_StickyKeysFBMask)
-             { 
-               XkbControlsChangesRec changes = {XkbAccessXFeedbackMask,
-                                                0, False};      
-               priv->xkb_desc->ctrls->ax_options = feedback_mask;
-               XkbChangeControls (display, priv->xkb_desc, &changes);
-             }
-#ifdef SPI_XKB_DEBUG
-             fprintf (stderr, "relatched %x\n",
-                      priv->pending_xkb_mod_relatch_mask);
-#endif
-             priv->pending_xkb_mod_relatch_mask = 0;
-           }
-         else
-           {
-             priv->xkb_latch_mask = xkb_snev->latched_mods;
-           }
-       }
-      XSynchronize (display, FALSE);
-    }
-  
-  return GDK_FILTER_CONTINUE;
-}
-
-static int
-_spi_controller_device_error_handler (Display *display, XErrorEvent *error)
-{
-  if (error->error_code == BadAccess) 
-    {  
-      g_message ("Could not complete key grab: grab already in use.\n");
-      spi_error_code = BadAccess;
-      return 0;
-    }
-  else 
-    {
-      return (*x_default_error_handler) (display, error);
-    }
-}
-
-static void
-spi_controller_register_with_devices (SpiDEController *controller)
-{
-  DEControllerPrivateData *priv;
-  int event_base, error_base, major_version, minor_version;
-
-  priv = (DEControllerPrivateData *) g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-  if (XTestQueryExtension (spi_get_display(), &event_base, &error_base, &major_version, &minor_version))
-    {
-      XTestGrabControl (spi_get_display (), True);
-    }
-
-  /* calls to device-specific implementations and routines go here */
-  /* register with: keyboard hardware code handler */
-  /* register with: (translated) keystroke handler */
-
-  priv->have_xkb = XkbQueryExtension (spi_get_display (),
-                                     &priv->xkb_major_extension_opcode,
-                                     &priv->xkb_base_event_code,
-                                     &priv->xkb_base_error_code, NULL, NULL);
-  if (priv->have_xkb)
-    {
-      gint i;
-      guint64 reserved = 0;
-      priv->xkb_desc = XkbGetMap (spi_get_display (), XkbKeySymsMask, XkbUseCoreKbd);
-      XkbSelectEvents (spi_get_display (),
-                      XkbUseCoreKbd,
-                      XkbStateNotifyMask, XkbStateNotifyMask);     
-      _numlock_physical_mask = XkbKeysymToModifiers (spi_get_display (), 
-                                                    XK_Num_Lock);
-      for (i = priv->xkb_desc->max_key_code; i >= priv->xkb_desc->min_key_code; --i)
-      {
-         if (priv->xkb_desc->map->key_sym_map[i].kt_index[0] == XkbOneLevelIndex)
-         { 
-             if (XKeycodeToKeysym (spi_get_display (), i, 0) != 0)
-             {
-                 /* don't use this one if there's a grab client! */
-                 gdk_error_trap_push ();
-                 XGrabKey (spi_get_display (), i, 0, 
-                           gdk_x11_get_default_root_xwindow (),
-                           TRUE,
-                           GrabModeSync, GrabModeSync);
-                 XSync (spi_get_display (), TRUE);
-                 XUngrabKey (spi_get_display (), i, 0, 
-                             gdk_x11_get_default_root_xwindow ());
-                 if (!gdk_error_trap_pop ())
-                 {
-                     reserved = i;
-                     break;
-                 }
-             }
-         }
-      }
-      if (reserved) 
-      {
-         priv->reserved_keycode = reserved;
-         priv->reserved_keysym = XKeycodeToKeysym (spi_get_display (), reserved, 0);
-      }
-      else
-      { 
-         priv->reserved_keycode = XKeysymToKeycode (spi_get_display (), XK_numbersign);
-         priv->reserved_keysym = XK_numbersign;
-      }
-#ifdef SPI_RESERVED_DEBUG
-      unsigned sym = 0;
-      sym = XKeycodeToKeysym (spi_get_display (), reserved, 0);
-      fprintf (stderr, "%x\n", sym);
-      fprintf (stderr, "setting the reserved keycode to %d (%s)\n", 
-              reserved, 
-              XKeysymToString (XKeycodeToKeysym (spi_get_display (),
-                                                            reserved, 0)));
-#endif
-    }  
-
-  gdk_window_add_filter (NULL, global_filter_fn, controller);
-
-  gdk_window_set_events (gdk_get_default_root_window (),
-                        GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
-
-  x_default_error_handler = XSetErrorHandler (_spi_controller_device_error_handler);
-}
-
-static gboolean
-spi_key_set_contains_key (GSList                          *key_set,
-                         const Accessibility_DeviceEvent *key_event)
-{
-  gint i;
-  gint len;
-  GSList *l;
-
-  if (!key_set)
-    {
-      g_print ("null key set!\n");
-      return TRUE;
-    }
-
-  len = g_slist_length (key_set);
-  
-  if (len == 0) /* special case, means "all keys/any key" */
-    {
-#ifdef SPI_DEBUG
-      g_print ("anykey\n");        
-#endif
-      return TRUE;
-    }
-
-  for (l = key_set,i = 0; l; l = g_slist_next(l),i++)
-    {
-      Accessibility_KeyDefinition *kd = l->data;
-#ifdef SPI_KEYEVENT_DEBUG          
-      g_print ("key_set[%d] event = %d, code = %d; key_event %d, code %d, string %s\n",
-                i,
-                (int) kd->keysym,
-                (int) kd->keycode,
-                (int) key_event->id,
-                (int) key_event->hw_code,
-                key_event->event_string); 
-#endif
-      if (kd->keysym == (dbus_uint32_t) key_event->id)
-        {
-          return TRUE;
-       }
-      if (kd->keycode == (dbus_uint32_t) key_event->hw_code)
-        {
-          return TRUE;
-       }
-      if (key_event->event_string && key_event->event_string[0] &&
-         !strcmp (kd->keystring, key_event->event_string))
-        {
-          return TRUE;
-       }
-    }
-
-  return FALSE;
-}
-
-static gboolean
-spi_eventtype_seq_contains_event (dbus_uint32_t types,
-                                 const Accessibility_DeviceEvent *event)
-{
-  if (types == 0) /* special case, means "all events/any event" */
-    {
-      return TRUE;
-    }
-
-  return (types & (1 << event->type));
-}
-
-static gboolean
-spi_key_event_matches_listener (const Accessibility_DeviceEvent *key_event,
-                               DEControllerKeyListener         *listener,
-                               dbus_bool_t                    is_system_global)
-{
-  if (((key_event->modifiers & 0xFF) == (dbus_uint16_t) (listener->mask & 0xFF)) &&
-       spi_key_set_contains_key (listener->keys, key_event) &&
-       spi_eventtype_seq_contains_event (listener->listener.types, key_event) && 
-      (is_system_global == listener->mode->global))
-    {
-      return TRUE;
-    }
-  else
-    {
-      return FALSE;
-    }
-}
-
-static gboolean
-spi_controller_notify_keylisteners (SpiDEController                 *controller,
-                                   Accessibility_DeviceEvent       *key_event,
-                                   dbus_bool_t                    is_system_global)
-{
-  GList   *l;
-  GSList  *notify = NULL, *l2;
-  GList  **key_listeners = &controller->key_listeners;
-  gboolean is_consumed;
-
-  if (!key_listeners)
-    {
-      return FALSE;
-    }
-
-  /* set the NUMLOCK event mask bit if appropriate: see bug #143702 */
-  if (key_event->modifiers & _numlock_physical_mask)
-      key_event->modifiers |= SPI_KEYMASK_NUMLOCK;
-
-  for (l = *key_listeners; l; l = l->next)
-    {
-       DEControllerKeyListener *key_listener = l->data;
-
-       if (spi_key_event_matches_listener (key_event, key_listener, is_system_global))
-         {
-          /* we clone (don't dup) the listener, to avoid refcount inc. */
-          notify = g_slist_prepend (notify,
-                                    spi_key_listener_clone (key_listener));
-         }
-    }
-
-#ifdef SPI_KEYEVENT_DEBUG
-  if (!notify)
-    {
-      g_print ("no match for event\n");
-    }
-#endif
-
-  is_consumed = FALSE;
-  for (l2 = notify; l2 && !is_consumed; l2 = l2->next)
-    {
-      DEControllerKeyListener *key_listener = l2->data;            
-
-      is_consumed = Accessibility_DeviceEventListener_notifyEvent (controller, controller->registry, &key_listener->listener, key_event) &&
-                   key_listener->mode->preemptive;
-
-      spi_key_listener_clone_free (key_listener);
-    }
-
-  for (; l2; l2 = l2->next)
-    {
-      DEControllerKeyListener *key_listener = l2->data;            
-      spi_key_listener_clone_free (key_listener);
-      /* clone doesn't have its own ref, so don't use spi_dec_listener_free */
-    }
-
-  g_slist_free (notify);
-
-#ifdef SPI_DEBUG
-  if (is_consumed) g_message ("consumed\n");
-#endif
-  return is_consumed;
-}
-
-static gboolean
-spi_clear_error_state (void)
-{
-       gboolean retval = spi_error_code != 0;
-       spi_error_code = 0;
-       return retval;
-}
-
-static Accessibility_DeviceEvent
-spi_keystroke_from_x_key_event (XKeyEvent *x_key_event)
-{
-  Accessibility_DeviceEvent key_event;
-  KeySym keysym;
-  const int cbuf_bytes = 20;
-  char cbuf [21];
-  int nbytes;
-
-  nbytes = XLookupString (x_key_event, cbuf, cbuf_bytes, &keysym, NULL);  
-  key_event.id = (dbus_int32_t)(keysym);
-  key_event.hw_code = (dbus_int16_t) x_key_event->keycode;
-  if (((XEvent *) x_key_event)->type == KeyPress)
-    {
-      key_event.type = Accessibility_KEY_PRESSED_EVENT;
-    }
-  else
-    {
-      key_event.type = Accessibility_KEY_RELEASED_EVENT;
-    } 
-  key_event.modifiers = (dbus_uint16_t)(x_key_event->state);
-  key_event.is_text = FALSE;
-  switch (keysym)
-    {
-      case ' ':
-        key_event.event_string = g_strdup ("space");
-        break;
-      case XK_Tab:
-        key_event.event_string = g_strdup ("Tab");
-       break;
-      case XK_BackSpace:
-        key_event.event_string = g_strdup ("Backspace");
-       break;
-      case XK_Return:
-        key_event.event_string = g_strdup ("Return");
-       break;
-      case XK_Home:
-        key_event.event_string = g_strdup ("Home");
-       break;
-      case XK_Page_Down:
-        key_event.event_string = g_strdup ("Page_Down");
-       break;
-      case XK_Page_Up:
-        key_event.event_string = g_strdup ("Page_Up");
-       break;
-      case XK_F1:
-        key_event.event_string = g_strdup ("F1");
-       break;
-      case XK_F2:
-        key_event.event_string = g_strdup ("F2");
-       break;
-      case XK_F3:
-        key_event.event_string = g_strdup ("F3");
-       break;
-      case XK_F4:
-        key_event.event_string = g_strdup ("F4");
-       break;
-      case XK_F5:
-        key_event.event_string = g_strdup ("F5");
-       break;
-      case XK_F6:
-        key_event.event_string = g_strdup ("F6");
-       break;
-      case XK_F7:
-        key_event.event_string = g_strdup ("F7");
-       break;
-      case XK_F8:
-        key_event.event_string = g_strdup ("F8");
-       break;
-      case XK_F9:
-        key_event.event_string = g_strdup ("F9");
-       break;
-      case XK_F10:
-        key_event.event_string = g_strdup ("F10");
-       break;
-      case XK_F11:
-        key_event.event_string = g_strdup ("F11");
-       break;
-      case XK_F12:
-        key_event.event_string = g_strdup ("F12");
-       break;
-      case XK_End:
-        key_event.event_string = g_strdup ("End");
-       break;
-      case XK_Escape:
-        key_event.event_string = g_strdup ("Escape");
-       break;
-      case XK_Up:
-        key_event.event_string = g_strdup ("Up");
-       break;
-      case XK_Down:
-        key_event.event_string = g_strdup ("Down");
-       break;
-      case XK_Left:
-        key_event.event_string = g_strdup ("Left");
-       break;
-      case XK_Right:
-        key_event.event_string = g_strdup ("Right");
-       break;
-      default:
-        if (nbytes > 0)
-          {
-           gunichar c;
-           cbuf[nbytes] = '\0'; /* OK since length is cbuf_bytes+1 */
-            key_event.event_string = g_strdup (cbuf);
-           c = keysym2ucs (keysym);
-           if (c > 0 && !g_unichar_iscntrl (c))
-             {
-               key_event.is_text = TRUE; 
-               /* incorrect for some composed chars? */
-             }
-          }
-        else
-          {
-            key_event.event_string = g_strdup ("");
-          }
-    }
-
-  key_event.timestamp = (dbus_uint32_t) x_key_event->time;
-#ifdef SPI_KEYEVENT_DEBUG
-  {
-    char *pressed_str  = "pressed";
-    char *released_str = "released";
-    char *state_ptr;
-
-    if (key_event.type == Accessibility_KEY_PRESSED_EVENT)
-      state_ptr = pressed_str;
-    else
-      state_ptr = released_str;
-    fprintf (stderr,
-            "Key %lu %s (%c), modifiers %d; string=%s [%x] %s\n",
-            (unsigned long) keysym,
-            state_ptr,
-            keysym ? (int) keysym : '*',
-            (int) x_key_event->state,
-            key_event.event_string,
-            key_event.event_string[0],
-            (key_event.is_text == TRUE) ? "(text)" : "(not text)");
-  }
-#endif
-#ifdef SPI_DEBUG
-  fprintf (stderr, "%s%c\n",
-     (x_key_event->state & Mod1Mask)?"Alt-":"",
-     ((x_key_event->state & ShiftMask)^(x_key_event->state & LockMask))?
-     g_ascii_toupper (keysym) : g_ascii_tolower (keysym));
-  fprintf (stderr, "serial: %x Time: %x\n", x_key_event->serial, x_key_event->time);
-#endif /* SPI_DEBUG */
-  return key_event;    
-}
-
-static gboolean
-spi_controller_update_key_grabs (SpiDEController           *controller,
-                                Accessibility_DeviceEvent *recv)
-{
-  GList *l, *next;
-  gboolean   update_failed = FALSE;
-  KeyCode keycode = 0;
-  
-  g_return_val_if_fail (controller != NULL, FALSE);
-
-  /*
-   * masks known to work with default RH 7.1+:
-   * 0 (no mods), LockMask, Mod1Mask, Mod2Mask, ShiftMask,
-   * ShiftMask|LockMask, Mod1Mask|LockMask, Mod2Mask|LockMask,
-   * ShiftMask|Mod1Mask, ShiftMask|Mod2Mask, Mod1Mask|Mod2Mask,
-   * ShiftMask|LockMask|Mod1Mask, ShiftMask|LockMask|Mod2Mask,
-   *
-   * ControlMask grabs are broken, must be in use already
-   */
-  if (recv)
-    keycode = keycode_for_keysym (controller, recv->id, NULL);
-  for (l = controller->keygrabs_list; l; l = next)
-    {
-      gboolean do_remove;
-      gboolean re_issue_grab;
-      DEControllerGrabMask *grab_mask = l->data;
-
-      next = l->next;
-
-      re_issue_grab = recv &&
-             (recv->modifiers & grab_mask->mod_mask) &&
-             (grab_mask->key_val == keycode);
-
-#ifdef SPI_DEBUG
-      fprintf (stderr, "mask=%lx %lx (%c%c) %s\n",
-              (long int) grab_mask->key_val,
-              (long int) grab_mask->mod_mask,
-              grab_mask->pending_add ? '+' : '.',
-              grab_mask->pending_remove ? '-' : '.',
-              re_issue_grab ? "re-issue": "");
-#endif
-
-      do_remove = FALSE;
-
-      if (grab_mask->pending_add && grab_mask->pending_remove)
-        {
-          do_remove = TRUE;
-       }
-      else if (grab_mask->pending_remove)
-        {
-#ifdef SPI_DEBUG
-      fprintf (stderr, "ungrabbing, mask=%x\n", grab_mask->mod_mask);
-#endif
-         XUngrabKey (spi_get_display (),
-                     grab_mask->key_val,
-                     grab_mask->mod_mask,
-                     gdk_x11_get_default_root_xwindow ());
-
-          do_remove = TRUE;
-       }
-      else if (grab_mask->pending_add || re_issue_grab)
-        {
-
-#ifdef SPI_DEBUG
-         fprintf (stderr, "grab %d with mask %x\n", grab_mask->key_val, grab_mask->mod_mask);
-#endif
-          XGrabKey (spi_get_display (),
-                   grab_mask->key_val,
-                   grab_mask->mod_mask,
-                   gdk_x11_get_default_root_xwindow (),
-                   True,
-                   GrabModeSync,
-                   GrabModeSync);
-         XSync (spi_get_display (), False);
-         update_failed = spi_clear_error_state ();
-         if (update_failed) {
-                 while (grab_mask->ref_count > 0) --grab_mask->ref_count;
-                 do_remove = TRUE;
-         }
-       }
-
-      grab_mask->pending_add = FALSE;
-      grab_mask->pending_remove = FALSE;
-
-      if (do_remove)
-        {
-          g_assert (grab_mask->ref_count <= 0);
-
-         controller->keygrabs_list = g_list_delete_link (
-           controller->keygrabs_list, l);
-
-         spi_grab_mask_free (grab_mask);
-       }
-
-    } 
-
-  return ! update_failed;
-}
-
-/*
- * Implemented GObject::finalize
- */
-static void
-spi_device_event_controller_object_finalize (GObject *object)
-{
-  SpiDEController *controller;
-  DEControllerPrivateData *private;
-  controller = SPI_DEVICE_EVENT_CONTROLLER (object);
-  GObjectClass *parent_class = G_OBJECT_CLASS(spi_device_event_controller_parent_class);
-#ifdef SPI_DEBUG
-  fprintf(stderr, "spi_device_event_controller_object_finalize called\n");
-#endif
-  /* disconnect any special listeners, get rid of outstanding keygrabs */
-  XUngrabKey (spi_get_display (), AnyKey, AnyModifier, DefaultRootWindow (spi_get_display ()));
-
-#ifdef HAVE_XEVIE
-  if (controller->xevie_display != NULL)
-    {
-      XevieEnd(controller->xevie_display);
-#ifdef SPI_KEYEVENT_DEBUG
-      printf("XevieEnd(dpy) finished \n");
-#endif
-    }
-#endif
-
-  private = g_object_get_data (G_OBJECT (controller), "spi-dec-private");
-  if (private->xkb_desc)
-         XkbFreeKeyboard (private->xkb_desc, 0, True);
-  g_free (private);
-  parent_class->finalize (object);
-}
-
-/*
- * DBus Accessibility::DEController::registerKeystrokeListener
- *     method implementation
- */
-static DBusMessage *
-impl_register_keystroke_listener (DBusConnection *bus,
-                                 DBusMessage *message,
-                                 void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  DEControllerKeyListener *dec_listener;
-  DBusMessageIter iter, iter_array;
-  const char *path;
-  GSList *keys = NULL;
-  dbus_int32_t mask, type;
-  Accessibility_EventListenerMode *mode;
-  dbus_bool_t ret;
-  DBusMessage *reply = NULL;
-  char *keystring;
-
-  dbus_message_iter_init(message, &iter);
-  // TODO: verify type signature
-  dbus_message_iter_get_basic(&iter, &path);
-  dbus_message_iter_next(&iter);
-  dbus_message_iter_recurse(&iter, &iter_array);
-  while (dbus_message_iter_get_arg_type(&iter_array) != DBUS_TYPE_INVALID)
-  {
-    Accessibility_KeyDefinition *kd = (Accessibility_KeyDefinition *)g_malloc(sizeof(Accessibility_KeyDefinition));
-    if (!spi_dbus_message_iter_get_struct(&iter_array, DBUS_TYPE_INT32, &kd->keycode, DBUS_TYPE_INT32, &kd->keysym, DBUS_TYPE_STRING, &keystring, DBUS_TYPE_INVALID))
-    {
-      break;
-    }
-    kd->keystring = g_strdup (keystring);
-    keys = g_slist_append(keys, kd);
-  }
-  dbus_message_iter_next(&iter);
-  dbus_message_iter_get_basic(&iter, &mask);
-  dbus_message_iter_next(&iter);
-  if (!strcmp (dbus_message_iter_get_signature (&iter), "u"))
-    dbus_message_iter_get_basic(&iter, &type);
-  else
-  {
-    dbus_message_iter_recurse(&iter, &iter_array);
-    while (dbus_message_iter_get_arg_type(&iter_array) != DBUS_TYPE_INVALID)
-    {
-      dbus_uint32_t t;
-      dbus_message_iter_get_basic (&iter_array, &t);
-      type |= (1 << t);
-      dbus_message_iter_next (&iter_array);
-    }
-    dbus_message_iter_next (&iter_array);
-  }
-  dbus_message_iter_next(&iter);
-  mode = (Accessibility_EventListenerMode *)g_malloc(sizeof(Accessibility_EventListenerMode));
-  if (mode)
-  {
-    spi_dbus_message_iter_get_struct(&iter, DBUS_TYPE_BOOLEAN, &mode->synchronous, DBUS_TYPE_BOOLEAN, &mode->preemptive, DBUS_TYPE_BOOLEAN, &mode->global, DBUS_TYPE_INVALID);
-  }
-#ifdef SPI_DEBUG
-  fprintf (stderr, "registering keystroke listener %s:%s with maskVal %lu\n",
-          dbus_message_get_sender(message), path, (unsigned long) mask);
-#endif
-  dec_listener = spi_dec_key_listener_new (dbus_message_get_sender(message), path, keys, mask, type, mode);
-  ret = spi_controller_register_device_listener (
-         controller, (DEControllerListener *) dec_listener);
-  reply = dbus_message_new_method_return (message);
-  if (reply)
-  {
-    dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &ret, DBUS_TYPE_INVALID);
-  }
-  return reply;
-}
-
-/*
- * DBus Accessibility::DEController::registerDeviceEventListener
- *     method implementation
- */
-static DBusMessage *
-impl_register_device_event_listener (DBusConnection *bus,
-                                 DBusMessage *message,
-                                 void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  DEControllerListener *dec_listener;
-  DBusError error;
-  const char *path;
-  dbus_int32_t event_types;
-  dbus_bool_t ret;
-  DBusMessage *reply = NULL;
-
-  dbus_error_init(&error);
-  if (!dbus_message_get_args(message, &error, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_UINT32, &event_types, DBUS_TYPE_INVALID))
-  {
-    return droute_invalid_arguments_error (message);
-  }
-  dec_listener = spi_dec_listener_new (dbus_message_get_sender(message), path, event_types);
-  ret =  spi_controller_register_device_listener (
-         controller, (DEControllerListener *) dec_listener);
-  reply = dbus_message_new_method_return (message);
-  if (reply)
-  {
-    dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &ret, DBUS_TYPE_INVALID);
-  }
-  return reply;
-}
-
-typedef struct {
-       DBusConnection *bus;
-       DEControllerListener    *listener;
-} RemoveListenerClosure;
-
-static SpiReEntrantContinue
-remove_listener_cb (GList * const *list,
-                   gpointer       user_data)
-{
-  DEControllerListener  *listener = (*list)->data;
-  RemoveListenerClosure *ctx = user_data;
-
-  if (!strcmp(ctx->listener->bus_name, listener->bus_name) &&
-      !strcmp(ctx->listener->path, listener->path))
-    {
-      spi_re_entrant_list_delete_link (list);
-      spi_dbus_remove_disconnect_match (ctx->bus, listener->bus_name);
-      spi_dec_listener_free (listener);
-    }
-
-  return SPI_RE_ENTRANT_CONTINUE;
-}
-
-static SpiReEntrantContinue
-copy_key_listener_cb (GList * const *list,
-                     gpointer       user_data)
-{
-  DEControllerKeyListener  *key_listener = (*list)->data;
-  RemoveListenerClosure    *ctx = user_data;
-
-  if (!strcmp(ctx->listener->bus_name, key_listener->listener.bus_name) &&
-      !strcmp(ctx->listener->path, key_listener->listener.path))
-    {
-      /* TODO: FIXME aggregate keys in case the listener is registered twice */
-      DEControllerKeyListener *ctx_key_listener = 
-       (DEControllerKeyListener *) ctx->listener; 
-      keylist_free (ctx_key_listener->keys);       
-      ctx_key_listener->keys = keylist_clone(key_listener->keys);
-    }
-
-  return SPI_RE_ENTRANT_CONTINUE;
-}
-
-static void
-spi_controller_deregister_device_listener (SpiDEController            *controller,
-                                          DEControllerListener *listener)
-{
-  RemoveListenerClosure  ctx;
-
-  ctx.bus = controller->bus;
-  ctx.listener = listener;
-
-  spi_re_entrant_list_foreach (&controller->mouse_listeners,
-                              remove_listener_cb, &ctx);
-}
-
-static void
-spi_deregister_controller_key_listener (SpiDEController            *controller,
-                                       DEControllerKeyListener    *key_listener)
-{
-  RemoveListenerClosure  ctx;
-
-  ctx.bus = controller->bus;
-  ctx.listener = (DEControllerListener *) key_listener;
-
-  /* special case, copy keyset from existing controller list entry */
-  if (g_slist_length(key_listener->keys) == 0)
-    {
-      spi_re_entrant_list_foreach (&controller->key_listeners,
-                                 copy_key_listener_cb, &ctx);
-    }
-
-  spi_controller_deregister_global_keygrabs (controller, key_listener);
-
-  spi_re_entrant_list_foreach (&controller->key_listeners,
-                               remove_listener_cb, &ctx);
-
-}
-
-void
-spi_remove_device_listeners (SpiDEController *controller, const char *bus_name)
-{
-  GList *l, *tmp;
-
-  for (l = controller->mouse_listeners; l; l = tmp)
-  {
-    DEControllerListener *listener = l->data;
-    tmp = l->next;
-    if (!strcmp (listener->bus_name, bus_name))
-    {
-      spi_controller_deregister_device_listener (controller, listener);
-    }
-  }
-  for (l = controller->key_listeners; l; l = tmp)
-  {
-    DEControllerKeyListener *key_listener = l->data;
-    tmp = l->next;
-    if (!strcmp (key_listener->listener.bus_name, bus_name))
-    {
-      spi_deregister_controller_key_listener (controller, key_listener);
-    }
-  }
-}
-
-/*
- * DBus Accessibility::DEController::deregisterKeystrokeListener
- *     method implementation
- */
-static DBusMessage *
-impl_deregister_keystroke_listener (DBusConnection *bus,
-                                 DBusMessage *message,
-                                 void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  DEControllerKeyListener *key_listener;
-  DBusMessageIter iter, iter_array;
-  const char *path;
-  GSList *keys = NULL;
-  dbus_int32_t mask, type;
-  DBusMessage *reply = NULL;
-
-  dbus_message_iter_init(message, &iter);
-  // TODO: verify type signature
-  dbus_message_iter_get_basic(&iter, &path);
-  dbus_message_iter_next(&iter);
-  dbus_message_iter_recurse(&iter, &iter_array);
-  while (dbus_message_iter_get_arg_type(&iter_array) != DBUS_TYPE_INVALID)
-  {
-    Accessibility_KeyDefinition *kd = (Accessibility_KeyDefinition *)g_malloc(sizeof(Accessibility_KeyDefinition));
-  char *keystring;
-
-    if (!spi_dbus_message_iter_get_struct(&iter_array, DBUS_TYPE_INT32, &kd->keycode, DBUS_TYPE_INT32, &kd->keysym, DBUS_TYPE_STRING, &keystring, DBUS_TYPE_INVALID))
-    {
-      break;
-    }
-    kd->keystring = g_strdup (keystring);
-    keys = g_slist_append(keys, kd);
-  }
-  dbus_message_iter_next(&iter);
-  dbus_message_iter_get_basic(&iter, &mask);
-  dbus_message_iter_next(&iter);
-  dbus_message_iter_get_basic(&iter, &type);
-  dbus_message_iter_next(&iter);
-  key_listener = spi_dec_key_listener_new (dbus_message_get_sender(message), path, keys, mask, type, NULL);
-#ifdef SPI_DEREGISTER_DEBUG
-  fprintf (stderr, "deregistering keystroke listener %p with maskVal %lu\n",
-          (void *) l, (unsigned long) mask->value);
-#endif
-
-  spi_deregister_controller_key_listener (controller, key_listener);
-
-  spi_dec_listener_free ((DEControllerListener *) key_listener);
-  reply = dbus_message_new_method_return (message);
-  return reply;
-}
-
-/*
- * DBus Accessibility::DEController::deregisterDeviceEventListener
- *     method implementation
- */
-static DBusMessage *
-impl_deregister_device_event_listener (DBusConnection *bus,
-                                 DBusMessage *message,
-                                 void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  DEControllerListener *listener;
-  DBusError error;
-  const char *path;
-  dbus_int32_t event_types;
-  DBusMessage *reply = NULL;
-
-  dbus_error_init(&error);
-  if (!dbus_message_get_args(message, &error, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_UINT32, &event_types, DBUS_TYPE_INVALID))
-  {
-    return droute_invalid_arguments_error (message);
-  }
-  listener = spi_dec_listener_new (dbus_message_get_sender(message), path, event_types);
-  spi_controller_deregister_device_listener (
-         controller, listener);
-  reply = dbus_message_new_method_return (message);
-  return reply;
-}
-
-static unsigned int dec_xkb_get_slowkeys_delay (SpiDEController *controller)
-{
-  unsigned int retval = 0;
-  DEControllerPrivateData *priv = (DEControllerPrivateData *)
-         g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-#ifdef HAVE_XKB
-#ifdef XKB_HAS_GET_SLOW_KEYS_DELAY     
-  retval = XkbGetSlowKeysDelay (spi_get_display (),
-                               XkbUseCoreKbd, &bounce_delay);
-#else
-  if (!(priv->xkb_desc == (XkbDescPtr) BadAlloc || priv->xkb_desc == NULL))
-    {
-      Status s = XkbGetControls (spi_get_display (),
-                                XkbAllControlsMask, priv->xkb_desc);
-      if (s == Success)
-        {
-        if (priv->xkb_desc->ctrls->enabled_ctrls & XkbSlowKeysMask)
-                retval = priv->xkb_desc->ctrls->slow_keys_delay;
-       }
-    }
-#endif
-#endif
-#ifdef SPI_XKB_DEBUG
-       fprintf (stderr, "SlowKeys delay: %d\n", (int) retval);
-#endif
-        return retval;
-}
-
-static unsigned int dec_xkb_get_bouncekeys_delay (SpiDEController *controller)
-{
-  unsigned int retval = 0;
-  DEControllerPrivateData *priv = (DEControllerPrivateData *)
-         g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-#ifdef HAVE_XKB
-#ifdef XKB_HAS_GET_BOUNCE_KEYS_DELAY   
-  retval = XkbGetBounceKeysDelay (spi_get_display (),
-                                 XkbUseCoreKbd, &bounce_delay);
-#else
-  if (!(priv->xkb_desc == (XkbDescPtr) BadAlloc || priv->xkb_desc == NULL))
-    {
-      Status s = XkbGetControls (spi_get_display (),
-                                XkbAllControlsMask, priv->xkb_desc);
-      if (s == Success)
-        {
-         if (priv->xkb_desc->ctrls->enabled_ctrls & XkbBounceKeysMask)
-                 retval = priv->xkb_desc->ctrls->debounce_delay;
-       }
-    }
-#endif
-#endif
-#ifdef SPI_XKB_DEBUG
-  fprintf (stderr, "BounceKeys delay: %d\n", (int) retval);
-#endif
-  return retval;
-}
-
-static gboolean
-dec_synth_keycode_press (SpiDEController *controller,
-                        unsigned int keycode)
-{
-       unsigned int time = CurrentTime;
-       unsigned int bounce_delay;
-       unsigned int elapsed_msec;
-       struct timeval tv;
-       DEControllerPrivateData *priv =
-               (DEControllerPrivateData *) g_object_get_qdata (G_OBJECT (controller),
-                                                               spi_dec_private_quark);
-       if (keycode == priv->last_release_keycode)
-       {
-               bounce_delay = dec_xkb_get_bouncekeys_delay (controller); 
-                if (bounce_delay)
-               {
-                       gettimeofday (&tv, NULL);
-                       elapsed_msec =
-                               (tv.tv_sec - priv->last_release_time.tv_sec) * 1000
-                               + (tv.tv_usec - priv->last_release_time.tv_usec) / 1000;
-#ifdef SPI_XKB_DEBUG                   
-                       fprintf (stderr, "%d ms elapsed (%ld usec)\n", elapsed_msec,
-                                (long) (tv.tv_usec - priv->last_release_time.tv_usec));
-#endif
-#ifdef THIS_IS_BROKEN
-                       if (elapsed_msec < bounce_delay)
-                               time = bounce_delay - elapsed_msec + 1;
-#else
-                       time = bounce_delay + 10;
-                       /* fudge for broken XTest */
-#endif
-#ifdef SPI_XKB_DEBUG                   
-                       fprintf (stderr, "waiting %d ms\n", time);
-#endif
-               }
-       }
-        XTestFakeKeyEvent (spi_get_display (), keycode, True, time);
-       priv->last_press_keycode = keycode;
-       XFlush (spi_get_display ());
-       XSync (spi_get_display (), False);
-       gettimeofday (&priv->last_press_time, NULL);
-       return TRUE;
-}
-
-static gboolean
-dec_synth_keycode_release (SpiDEController *controller,
-                          unsigned int keycode)
-{
-       unsigned int time = CurrentTime;
-       unsigned int slow_delay;
-       unsigned int elapsed_msec;
-       struct timeval tv;
-       DEControllerPrivateData *priv =
-               (DEControllerPrivateData *) g_object_get_qdata (G_OBJECT (controller),
-                                                               spi_dec_private_quark);
-       if (keycode == priv->last_press_keycode)
-       {
-               slow_delay = dec_xkb_get_slowkeys_delay (controller);
-               if (slow_delay)
-               {
-                       gettimeofday (&tv, NULL);
-                       elapsed_msec =
-                               (tv.tv_sec - priv->last_press_time.tv_sec) * 1000
-                               + (tv.tv_usec - priv->last_press_time.tv_usec) / 1000;
-#ifdef SPI_XKB_DEBUG                   
-                       fprintf (stderr, "%d ms elapsed (%ld usec)\n", elapsed_msec,
-                                (long) (tv.tv_usec - priv->last_press_time.tv_usec));
-#endif
-#ifdef THIS_IS_BROKEN_DUNNO_WHY
-                       if (elapsed_msec < slow_delay)
-                               time = slow_delay - elapsed_msec + 1;
-#else
-                       time = slow_delay + 10;
-                       /* our XTest seems broken, we have to add slop as above */
-#endif
-#ifdef SPI_XKB_DEBUG                   
-                       fprintf (stderr, "waiting %d ms\n", time);
-#endif
-               }
-       }
-        XTestFakeKeyEvent (spi_get_display (), keycode, False, time);
-       priv->last_release_keycode = keycode;
-       XSync (spi_get_display (), False);
-       gettimeofday (&priv->last_release_time, NULL);
-       return TRUE;
-}
-
-static unsigned
-dec_get_modifier_state (SpiDEController *controller)
-{
-       return mouse_mask_state;
-}
-
-static gboolean
-dec_lock_modifiers (SpiDEController *controller, unsigned modifiers)
-{
-    DEControllerPrivateData *priv = (DEControllerPrivateData *) 
-    g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);  
-    
-    if (priv->have_xkb) {
-        return XkbLockModifiers (spi_get_display (), XkbUseCoreKbd, 
-                                  modifiers, modifiers);
-    } else {
-       int mod_index;
-       for (mod_index=0;mod_index<8;mod_index++)
-           if (modifiers & (1<<mod_index))
-               dec_synth_keycode_press(controller, xmkeymap->modifiermap[mod_index]);
-       return TRUE;
-    }
-}
-
-static gboolean
-dec_unlock_modifiers (SpiDEController *controller, unsigned modifiers)
-{
-    DEControllerPrivateData *priv = (DEControllerPrivateData *) 
-    g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);  
-    
-    if (priv->have_xkb) {
-        return XkbLockModifiers (spi_get_display (), XkbUseCoreKbd, 
-                                  modifiers, 0);
-    } else {
-       int mod_index;
-       for (mod_index=0;mod_index<8;mod_index++)
-           if (modifiers & (1<<mod_index))
-               dec_synth_keycode_release(controller, xmkeymap->modifiermap[mod_index]);
-       return TRUE;
-    }
-}
-
-static KeySym
-dec_keysym_for_unichar (SpiDEController *controller, gunichar unichar)
-{
-       return ucs2keysym ((long) unichar);
-}
-
-static gboolean
-dec_synth_keysym (SpiDEController *controller, KeySym keysym)
-{
-       KeyCode key_synth_code;
-       unsigned int modifiers, synth_mods, lock_mods;
-
-       key_synth_code = keycode_for_keysym (controller, keysym, &synth_mods);
-
-       if ((key_synth_code == 0) || (synth_mods == 0xFF)) return FALSE;
-
-       /* TODO: set the modifiers accordingly! */
-       modifiers = dec_get_modifier_state (controller);
-       /* side-effect; we may unset mousebutton modifiers here! */
-
-       lock_mods = 0;
-       if (synth_mods != modifiers) {
-               lock_mods = synth_mods & ~modifiers;
-               dec_lock_modifiers (controller, lock_mods);
-       }
-       dec_synth_keycode_press (controller, key_synth_code);
-       dec_synth_keycode_release (controller, key_synth_code);
-
-       if (synth_mods != modifiers) 
-               dec_unlock_modifiers (controller, lock_mods);
-       return TRUE;
-}
-
-
-static gboolean
-dec_synth_keystring (SpiDEController *controller, const char *keystring)
-{
-       /* probably we need to create and inject an XIM handler eventually. */
-       /* for now, try to match the string to existing 
-        * keycode+modifier states. 
-         */
-       KeySym *keysyms;
-       gint maxlen = 0;
-       gunichar unichar = 0;
-       gint i = 0;
-       gboolean retval = TRUE;
-       const gchar *c;
-
-       maxlen = strlen (keystring) + 1;
-       keysyms = g_new0 (KeySym, maxlen);
-       if (!(keystring && *keystring && g_utf8_validate (keystring, -1, &c))) { 
-               retval = FALSE;
-       } 
-       else {
-#ifdef SPI_DEBUG
-               fprintf (stderr, "[keystring synthesis attempted on %s]\n", keystring);
-#endif
-               while (keystring && (unichar = g_utf8_get_char (keystring))) {
-                       KeySym keysym;
-                       char bytes[6];
-                       gint mbytes;
-                       
-                       mbytes = g_unichar_to_utf8 (unichar, bytes);
-                       bytes[mbytes] = '\0';
-#ifdef SPI_DEBUG
-                       fprintf (stderr, "[unichar %s]", bytes);
-#endif
-                       keysym = dec_keysym_for_unichar (controller, unichar);
-                       if (keysym == NoSymbol) {
-#ifdef SPI_DEBUG
-                               fprintf (stderr, "no keysym for %s", bytes);
-#endif
-                               retval = FALSE;
-                               break;
-                       }
-                       keysyms[i++] = keysym;
-                       keystring = g_utf8_next_char (keystring); 
-               }
-               keysyms[i++] = 0;
-               XSynchronize (spi_get_display (), TRUE);
-               for (i = 0; keysyms[i]; ++i) {
-                       if (!dec_synth_keysym (controller, keysyms[i])) {
-#ifdef SPI_DEBUG
-                               fprintf (stderr, "could not synthesize %c\n",
-                                        (int) keysyms[i]);
-#endif
-                               retval = FALSE;
-                               break;
-                       }
-               }
-               XSynchronize (spi_get_display (), FALSE);
-       }
-       g_free (keysyms);
-
-       return retval;
-}
-
-
-/*
- * DBus Accessibility::DEController::registerKeystrokeListener
- *     method implementation
- */
-static DBusMessage * impl_generate_keyboard_event (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  DBusError error;
-  dbus_int32_t keycode;
-  char *keystring;
-  dbus_uint32_t synth_type;
-  gint err;
-  KeySym keysym;
-  DEControllerPrivateData *priv;
-  DBusMessage *reply = NULL;
-
-  dbus_error_init(&error);
-  if (!dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &keycode, DBUS_TYPE_STRING, &keystring, DBUS_TYPE_UINT32, &synth_type, DBUS_TYPE_INVALID))
-  {
-    return droute_invalid_arguments_error (message);
-  }
-
-#ifdef SPI_DEBUG
-       fprintf (stderr, "synthesizing keystroke %ld, type %d\n",
-                (long) keycode, (int) synth_type);
-#endif
-  /* TODO: hide/wrap/remove X dependency */
-
-  /*
-   * TODO: when initializing, query for XTest extension before using,
-   * and fall back to XSendEvent() if XTest is not available.
-   */
-  
-  gdk_error_trap_push ();
-
-  priv = (DEControllerPrivateData *) 
-      g_object_get_qdata (G_OBJECT (controller), spi_dec_private_quark);
-
-  if (!priv->have_xkb && xmkeymap==NULL) {
-    xmkeymap = XGetModifierMapping(spi_get_display ());
-  }
-
-  switch (synth_type)
-    {
-      case Accessibility_KEY_PRESS:
-             dec_synth_keycode_press (controller, keycode);
-             break;
-      case Accessibility_KEY_PRESSRELEASE:
-             dec_synth_keycode_press (controller, keycode);
-      case Accessibility_KEY_RELEASE:
-             dec_synth_keycode_release (controller, keycode);
-             break;
-      case Accessibility_KEY_SYM:
-#ifdef SPI_XKB_DEBUG         
-             fprintf (stderr, "KeySym synthesis\n");
-#endif
-             /* 
-              * note: we are using long for 'keycode'
-              * in our arg list; it can contain either
-              * a keycode or a keysym.
-              */
-             dec_synth_keysym (controller, (KeySym) keycode);
-             break;
-      case Accessibility_KEY_STRING:
-             if (!dec_synth_keystring (controller, keystring))
-                     fprintf (stderr, "Keystring synthesis failure, string=%s\n",
-                              keystring);
-             break;
-    }
-  if (synth_type == Accessibility_KEY_SYM) {
-    keysym = keycode;
-  }
-  else {
-    keysym = XkbKeycodeToKeysym (spi_get_display (), keycode, 0, 0);
-  }
-  if (XkbKeysymToModifiers (spi_get_display (), keysym) == 0) 
-    {
-      spi_dec_clear_unlatch_pending (controller);
-    }
-  reply = dbus_message_new_method_return (message);
-  return reply;
-}
-
-/* Accessibility::DEController::generateMouseEvent */
-static DBusMessage * impl_generate_mouse_event (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  DBusError error;
-  dbus_int32_t       x;
-  dbus_int32_t       y;
-  char *eventName;
-  DBusMessage *reply = NULL;
-  int button = 0;
-  gboolean err = FALSE;
-  Display *display = spi_get_display ();
-
-  dbus_error_init (&error);
-  if (!dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y, DBUS_TYPE_STRING, &eventName, DBUS_TYPE_INVALID))
-  {
-    return droute_invalid_arguments_error (message);
-  }
-
-#ifdef SPI_DEBUG
-  fprintf (stderr, "generating mouse %s event at %ld, %ld\n",
-          eventName, (long int) x, (long int) y);
-#endif
-  switch (eventName[0])
-    {
-      case 'b':
-        switch (eventName[1])
-         {
-         /* TODO: check number of buttons before parsing */
-         case '1':
-                   button = 1;
-                   break;
-         case '2':
-                 button = 2;
-                 break;
-         case '3':
-                 button = 3;
-                 break;
-         case '4':
-                 button = 4;
-                 break;
-         case '5':
-                 button = 5;
-                 break;
-         default:
-                 err = TRUE;
-         }
-       if (!err)
-         {
-           if (x != -1 && y != -1)
-             {
-               XTestFakeMotionEvent (display, DefaultScreen (display),
-                                     x, y, 0);
-             }
-           XTestFakeButtonEvent (display, button, !(eventName[2] == 'r'), 0);
-           if (eventName[2] == 'c')
-             XTestFakeButtonEvent (display, button, FALSE, 1);
-           else if (eventName[2] == 'd')
-             {
-             XTestFakeButtonEvent (display, button, FALSE, 1);
-             XTestFakeButtonEvent (display, button, TRUE, 2);
-             XTestFakeButtonEvent (display, button, FALSE, 3);
-             }
-         }
-       break;
-      case 'r': /* relative motion */ 
-       XTestFakeRelativeMotionEvent (display, x, y, 0);
-        break;
-      case 'a': /* absolute motion */
-       XTestFakeMotionEvent (display, DefaultScreen (display),
-                             x, y, 0);
-        break;
-    }
-  reply = dbus_message_new_method_return (message);
-  return reply;
-}
-
-/* Accessibility::DEController::notifyListenersSync */
-static DBusMessage *
-impl_notify_listeners_sync (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  Accessibility_DeviceEvent event;
-  dbus_bool_t ret;
-  DBusMessage *reply = NULL;
-
-  if (!spi_dbus_demarshal_deviceEvent(message, &event))
-  {
-    return droute_invalid_arguments_error (message);
-  }
-#ifdef SPI_DEBUG
-  g_print ("notifylistening listeners synchronously: controller %p, event id %d\n",
-          controller, (int) event.id);
-#endif
-  ret = spi_controller_notify_keylisteners (controller,
-                                            (Accessibility_DeviceEvent *) 
-                                            &event, FALSE) ?
-         TRUE : FALSE; 
-  reply = dbus_message_new_method_return (message);
-  if (reply)
-  {
-    dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &ret, DBUS_TYPE_INVALID);
-  }
-  return reply;
-}
-
-static DBusMessage *
-impl_notify_listeners_async (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  SpiDEController *controller = SPI_DEVICE_EVENT_CONTROLLER(user_data);
-  Accessibility_DeviceEvent event;
-  DBusMessage *reply = NULL;
-
-  if (!spi_dbus_demarshal_deviceEvent(message, &event))
-  {
-    return droute_invalid_arguments_error (message);
-  }
-#ifdef SPI_DEBUG
-  g_print ("notifylistening listeners asynchronously: controller %p, event id %d\n",
-          controller, (int) event.id);
-#endif
-  spi_controller_notify_keylisteners (controller, (Accessibility_DeviceEvent *)
-                                     &event, FALSE); 
-  reply = dbus_message_new_method_return (message);
-  return reply;
-}
-
-static void
-spi_device_event_controller_class_init (SpiDEControllerClass *klass)
-{
-  GObjectClass * object_class = (GObjectClass *) klass;
-
-  spi_device_event_controller_parent_class = g_type_class_peek_parent (klass);
-
-  object_class->finalize = spi_device_event_controller_object_finalize;
-
-  if (!spi_dec_private_quark)
-         spi_dec_private_quark = g_quark_from_static_string ("spi-dec-private");
-}
-
-#ifdef HAVE_XEVIE
-static Bool isEvent(Display *dpy, XEvent *event, char *arg)
-{
-   return TRUE;
-}
-
-static gboolean
-handle_io (GIOChannel *source,
-           GIOCondition condition,
-           gpointer data) 
-{
-  SpiDEController *controller = (SpiDEController *) data;
-  gboolean is_consumed = FALSE;
-  XEvent ev;
-
-  while (XCheckIfEvent(controller->xevie_display, &ev, isEvent, NULL))
-    {
-      if (ev.type == KeyPress || ev.type == KeyRelease)
-        is_consumed = spi_device_event_controller_forward_key_event (controller, &ev);
-
-      if (! is_consumed)
-        XevieSendEvent(controller->xevie_display, &ev, XEVIE_UNMODIFIED);
-    }
-
-  return TRUE;
-}
-#endif /* HAVE_XEVIE */
-
-static void
-spi_device_event_controller_init (SpiDEController *device_event_controller)
-{
-#ifdef HAVE_XEVIE
-  GIOChannel *ioc;
-  int fd;
-#endif /* HAVE_XEVIE */
-
-  DEControllerPrivateData *private;    
-  device_event_controller->key_listeners   = NULL;
-  device_event_controller->mouse_listeners = NULL;
-  device_event_controller->keygrabs_list   = NULL;
-  device_event_controller->xevie_display   = NULL;
-
-#ifdef HAVE_XEVIE
-  device_event_controller->xevie_display = XOpenDisplay(NULL);
-
-  if (XevieStart(device_event_controller->xevie_display) == TRUE)
-    {
-#ifdef SPI_KEYEVENT_DEBUG
-      fprintf (stderr, "XevieStart() success \n");
-#endif
-      XevieSelectInput(device_event_controller->xevie_display, KeyPressMask | KeyReleaseMask);
-
-      fd = ConnectionNumber(device_event_controller->xevie_display);
-      ioc = g_io_channel_unix_new (fd);
-      g_io_add_watch (ioc, G_IO_IN | G_IO_HUP, handle_io, device_event_controller);
-      g_io_channel_unref (ioc);
-    }
-  else
-    {
-      device_event_controller->xevie_display = NULL;
-#ifdef SPI_KEYEVENT_DEBUG
-      fprintf (stderr, "XevieStart() failed, only one client is allowed to do event int exception\n");
-#endif
-    }
-#endif /* HAVE_XEVIE */
-
-  private = g_new0 (DEControllerPrivateData, 1);
-  gettimeofday (&private->last_press_time, NULL);
-  gettimeofday (&private->last_release_time, NULL);
-  g_object_set_qdata (G_OBJECT (device_event_controller),
-                     spi_dec_private_quark,
-                     private);
-  spi_controller_register_with_devices (device_event_controller);
-}
-
-static gboolean
-spi_device_event_controller_forward_key_event (SpiDEController *controller,
-                                              const XEvent    *event)
-{
-  Accessibility_DeviceEvent key_event;
-  gboolean ret;
-
-  g_assert (event->type == KeyPress || event->type == KeyRelease);
-
-  key_event = spi_keystroke_from_x_key_event ((XKeyEvent *) event);
-
-  if (controller->xevie_display == NULL)
-    spi_controller_update_key_grabs (controller, &key_event);
-
-  /* relay to listeners, and decide whether to consume it or not */
-  ret = spi_controller_notify_keylisteners (controller, &key_event, TRUE);
-  g_free(key_event.event_string);
-  return ret;
-}
-
-
-static gboolean
-is_key_released (KeyCode code)
-{
-  char keys[32];
-  int down;
-
-  XQueryKeymap (spi_get_display (), keys);
-  down = BIT (keys, code);
-  return (down == 0);
-}
-
-static gboolean
-check_release (gpointer data)
-{
-  gboolean released;
-  Accessibility_DeviceEvent *event = (Accessibility_DeviceEvent *)data;
-  KeyCode code = event->hw_code;
-
-  released = is_key_released (code);
-
-  if (released)
-    {
-      check_release_handler = 0;
-      event->type = Accessibility_KEY_RELEASED_EVENT;
-      spi_controller_notify_keylisteners (saved_controller, event, TRUE);
-    }
-  return (released == 0);
-}
-
-static void wait_for_release_event (XEvent          *event,
-                                    SpiDEController *controller)
-{
-  pressed_event = spi_keystroke_from_x_key_event ((XKeyEvent *) event);
-  saved_controller = controller;
-  check_release_handler = g_timeout_add (CHECK_RELEASE_DELAY, check_release, &pressed_event);
-}
-
-static DRouteMethod dev_methods[] =
-{
-  { impl_register_keystroke_listener, "registerKeystrokeListener" },
-  { impl_register_device_event_listener, "registerDeviceEventListener" },
-  { impl_deregister_keystroke_listener, "deregisterKeystrokeListener" },
-  { impl_deregister_device_event_listener, "deregisterDeviceEventListener" },
-  { impl_generate_keyboard_event, "generateKeyboardEvent" },
-  { impl_generate_mouse_event, "generateMouseEvent" },
-  { impl_notify_listeners_sync, "notifyListenersSync" },
-  { impl_notify_listeners_async, "notifyListenersAsync" },
-  { NULL, NULL }
-};
-
-SpiDEController *
-spi_registry_dec_new (SpiRegistry *reg, DBusConnection *bus, DRouteContext *droute)
-{
-  SpiDEController *dec = g_object_new (SPI_DEVICE_EVENT_CONTROLLER_TYPE, NULL);
-  DRoutePath *path;
-
-  dec->registry = g_object_ref (reg);
-  dec->bus = bus;
-
-  path = droute_add_one (droute,
-                         SPI_DBUS_PATH_DEC,
-                         dec);
-
-  droute_path_add_interface (path,
-                             SPI_DBUS_INTERFACE_DEC,
-                             dev_methods,
-                             NULL);
-
-  spi_dec_init_mouse_listener (dec);
-  /* TODO: kill mouse listener on finalize */
-
-  return dec;
-}
diff --git a/registryd/deviceeventcontroller.h b/registryd/deviceeventcontroller.h
deleted file mode 100644 (file)
index 392cc5e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2002 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef SPI_DEVICE_EVENT_CONTROLLER_H_
-#define SPI_DEVICE_EVENT_CONTROLLER_H_
-
-#include <X11/Xlib.h>
-#include <gdk/gdk.h>
-#include <droute/droute.h>
-
-typedef struct _SpiDEController SpiDEController;
-
-#include "registry.h"
-
-G_BEGIN_DECLS
-
-#define SPI_DEVICE_EVENT_CONTROLLER_TYPE        (spi_device_event_controller_get_type ())
-#define SPI_DEVICE_EVENT_CONTROLLER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEController))
-#define SPI_DEVICE_EVENT_CONTROLLER_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEControllerClass))
-#define SPI_IS_DEVICE_EVENT_CONTROLLER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), SPI_DEVICE_EVENT_CONTROLLER_TYPE))
-#define SPI_IS_DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SPI_DEVICE_EVENT_CONTROLLER_TYPE))
-#define SPI_DEVICE_EVENT_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEControllerClass))
-
-struct _SpiDEController {
-       GObject parent;
-       DBusConnection *bus;
-       SpiRegistry    *registry;
-       GList          *key_listeners;
-       GList          *mouse_listeners;
-       GList          *keygrabs_list;
-       Display        *xevie_display;
-};
-
-typedef struct {
-  GObjectClass parent_class;
-} SpiDEControllerClass;
-
-GType            spi_device_event_controller_get_type (void);
-SpiDEController *spi_device_event_controller_new      (SpiRegistry    *registry,
-                                                       DBusConnection *bus,
-                                                       DRouteContext  *droute);
-
-void spi_remove_device_listeners (SpiDEController *controller, const char *bus_name);
-
-SpiDEController *spi_registry_dec_new (SpiRegistry *reg, DBusConnection *bus, DRouteContext *droute);
-G_END_DECLS
-
-#endif /* DEVICEEVENTCONTROLLER_H_ */
diff --git a/registryd/reentrant-list.c b/registryd/reentrant-list.c
deleted file mode 100644 (file)
index 6e9911e..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2002 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <glib.h>
-
-#include "reentrant-list.h"
-
-typedef struct {
-       GList **list;
-       GList  *iterator;
-} Iteration;
-
-static GSList *working_list = NULL; /* of Iteration */
-
-/*
- *   deletes an element from the list - in a re-entrant
- * safe fashion; advances the element pointer to the next
- * element.
- */
-void
-spi_re_entrant_list_delete_link (GList * const *element_ptr)
-{
-  GSList    *l;
-  GList     *next;
-  GList     *element;
-  gboolean   first_item;
-
-  g_return_if_fail (element_ptr != NULL);
-
-  element = *element_ptr;
-  g_return_if_fail (element != NULL);
-
-  next = element->next;
-  first_item = (element->prev == NULL);
-
-  g_list_remove_link (NULL, element);
-
-  for (l = working_list; l; l = l->next)
-    {
-       Iteration *i = l->data;
-
-       if (i->iterator == element)
-         {
-           i->iterator = next;
-         }
-
-       if (first_item && *(i->list) == element)
-         {
-           *(i->list) = next;
-         }
-    }
-
-  g_list_free_1 (element);
-}
-
-void
-spi_re_entrant_list_foreach (GList         **list,
-                            SpiReEntrantFn  func,
-                            gpointer        user_data)
-{
-       Iteration i;
-
-       if (!list || !*list)
-         {
-            return;
-         }
-
-       i.list = list;
-       i.iterator = *list;
-
-       working_list = g_slist_prepend (working_list, &i);
-
-       while (i.iterator) {
-               GList *l = i.iterator;
-
-               func (&i.iterator, user_data);
-
-               if (i.iterator == l)
-                       i.iterator = i.iterator->next;
-       }
-
-       working_list = g_slist_remove (working_list, &i);
-}
diff --git a/registryd/reentrant-list.h b/registryd/reentrant-list.h
deleted file mode 100644 (file)
index 88e37e4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2002 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef REENTRANT_LIST_H_
-#define REENTRANT_LIST_H_
-
-#include <glib/glist.h>
-
-G_BEGIN_DECLS
-
-typedef enum {
-       SPI_RE_ENTRANT_CONTINUE = 0,
-       SPI_RE_ENTRANT_TERMINATE
-} SpiReEntrantContinue;
-
-typedef SpiReEntrantContinue (*SpiReEntrantFn) (GList * const *list,
-                                               gpointer       user_data);
-
-void spi_re_entrant_list_delete_link (GList * const  *element_ptr);
-void spi_re_entrant_list_foreach     (GList         **list,
-                                     SpiReEntrantFn  func,
-                                     gpointer        user_data);
-
-G_END_DECLS
-
-#endif /* REENTRANT_LIST_H_ */
diff --git a/registryd/registry-main.c b/registryd/registry-main.c
deleted file mode 100644 (file)
index 3b738af..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2002 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <config.h>
-#include <string.h>
-#include <glib/gmain.h>
-
-#include <spi-common/spi-dbus.h>
-#include <droute/droute.h>
-
-#include "registry.h"
-#include "deviceeventcontroller.h"
-
-#if !defined ATSPI_INTROSPECTION_PATH
-    #error "No introspection XML directory defined"
-#endif
-
-static gchar *dbus_name = NULL;
-
-static GOptionEntry optentries[] =
-{
-  {"dbus-name", 0, 0, G_OPTION_ARG_STRING, &dbus_name, "Well-known name to register with D-Bus", NULL},
-  {NULL}
-};
-
-int
-main (int argc, char **argv)
-{
-  SpiRegistry *registry;
-  SpiDEController *dec;
-  DRouteContext *droute;
-  gchar *introspection_directory;
-
-  GMainLoop *mainloop;
-  DBusConnection *bus;
-
-  GOptionContext *opt;
-
-  GError *err = NULL;
-  DBusError error;
-  int ret;
-
-  g_type_init();
-
-  /* We depend on GDK as well as XLib for device event processing */
-  gdk_init(&argc, &argv);
-
-  /*Parse command options*/
-  opt = g_option_context_new(NULL);
-  g_option_context_add_main_entries(opt, optentries, NULL);
-
-  if (!g_option_context_parse(opt, &argc, &argv, &err))
-      g_error("Option parsing failed: %s\n", err->message);
-
-  if (dbus_name == NULL)
-      dbus_name = SPI_DBUS_NAME_REGISTRY;
-
-  dbus_error_init (&error);
-  bus = dbus_bus_get(DBUS_BUS_SESSION, &error);
-  if (!bus)
-  {
-    g_warning("Couldn't connect to dbus: %s\n", error.message);
-  }
-
-  mainloop = g_main_loop_new (NULL, FALSE);
-  dbus_connection_setup_with_g_main(bus, g_main_context_default());
-
-  ret = dbus_bus_request_name(bus, dbus_name, DBUS_NAME_FLAG_DO_NOT_QUEUE, &error);
-  if (ret == DBUS_REQUEST_NAME_REPLY_EXISTS)
-    {
-      g_error("Could not obtain D-Bus name - %s\n", dbus_name);
-    }
-  else
-    {
-      g_print ("SpiRegistry daemon is running with well-known name - %s\n", dbus_name);
-    }
-
-  /* Get D-Bus introspection directory */
-  introspection_directory = (char *) g_getenv("ATSPI_INTROSPECTION_PATH");
-  if (introspection_directory == NULL)
-      introspection_directory = ATSPI_INTROSPECTION_PATH;
-
-  /* Set up D-Route for use by the dec */
-  droute = droute_new (bus, introspection_directory);
-
-  registry = spi_registry_new (bus, droute);
-  dec = spi_registry_dec_new (registry, bus, droute);
-
-  g_main_loop_run (mainloop);
-  return 0;
-}
diff --git a/registryd/registry.c b/registryd/registry.c
deleted file mode 100644 (file)
index 2751e90..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2008, Codethink Ltd.
- * Copyright 2001, 2002 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <spi-common/spi-dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
-#include "registry.h"
-
-enum
-{
-  REGISTRY_APPLICATION_REMOVE = 0,
-  REGISTRY_APPLICATION_ADD = 1
-};
-
-/*---------------------------------------------------------------------------*/
-
-G_DEFINE_TYPE(SpiRegistry, spi_registry, G_TYPE_OBJECT)
-
-static void
-spi_registry_class_init (SpiRegistryClass *klass)
-{
-  GObjectClass * object_class = (GObjectClass *) klass;
-
-  spi_registry_parent_class = g_type_class_ref (G_TYPE_OBJECT);
-}
-
-static void
-spi_registry_init (SpiRegistry *registry)
-{
-  registry->apps = g_sequence_new (g_free);
-}
-
-/*---------------------------------------------------------------------------*/
-
-static void emit(SpiRegistry *reg, const char *itf, const char *name, int ftype, ...)
-{
-  va_list arg;
-
-  va_start(arg, ftype);
-  spi_dbus_emit_valist(reg->bus, SPI_DBUS_PATH_REGISTRY, itf, name, ftype, arg);
-  va_end(arg);
-}
-
-/*---------------------------------------------------------------------------*/
-
-static gint
-data_str_cmp (gpointer a, gpointer b, gpointer data)
-{
-  return g_strcmp0(a, b);
-}
-
-static gboolean
-seq_add_string (GSequence *seq, gchar *str)
-{
-  GSequenceIter *iter;
-  gchar *item;
-  gboolean res = FALSE;
-
-  iter = g_sequence_search (seq, str, (GCompareDataFunc) data_str_cmp, NULL);
-  iter = g_sequence_iter_prev (iter);
-
-  if (!g_sequence_iter_is_end (iter))
-    {
-      item = g_sequence_get (iter);
-      if (g_strcmp0 (item, str))
-        {
-          g_sequence_insert_sorted (seq, g_strdup(str), (GCompareDataFunc) data_str_cmp, NULL);
-          res = TRUE;
-        }
-    }
-  else
-    {
-      g_sequence_insert_sorted (seq, g_strdup(str), (GCompareDataFunc) data_str_cmp, NULL);
-      res = TRUE;
-    }
-
-  return res;
-}
-
-static gboolean
-seq_remove_string (GSequence *seq, gchar *str)
-{
-  GSequenceIter *iter;
-  gchar *item;
-  gboolean res = FALSE;
-
-  iter = g_sequence_search (seq, str, (GCompareDataFunc) data_str_cmp, NULL);
-  iter = g_sequence_iter_prev (iter);
-
-  if (!g_sequence_iter_is_end (iter))
-    {
-      item = g_sequence_get (iter);
-      if (!g_strcmp0 (item, str))
-        {
-          g_sequence_remove (iter);
-          res = TRUE;
-        }
-    }
-  return res;
-}
-
-static void
-add_application (DBusConnection *bus, SpiRegistry *reg, gchar *app)
-{
-  guint add = REGISTRY_APPLICATION_ADD;
-
-  if (seq_add_string (reg->apps, app))
-    {
-      emit (reg,
-            SPI_DBUS_INTERFACE_REGISTRY,
-            "updateApplications",
-            DBUS_TYPE_INT32,
-            &add,
-            DBUS_TYPE_STRING,
-            &app,
-            DBUS_TYPE_INVALID);
-    }
-}
-
-static void
-remove_application (DBusConnection *bus, SpiRegistry *reg, gchar *app)
-{
-  guint remove = REGISTRY_APPLICATION_REMOVE;
-
-  if (seq_remove_string (reg->apps, app))
-    {
-      /*TODO spi_remove_device_listeners (registry->de_controller, old);*/
-      emit (reg,
-            SPI_DBUS_INTERFACE_REGISTRY,
-            "updateApplications",
-            DBUS_TYPE_INT32,
-            &remove,
-            DBUS_TYPE_STRING,
-            &app,
-            DBUS_TYPE_INVALID);
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-
-static void
-add_bus_name_cb (gpointer item, gpointer data)
-{
-  DBusMessageIter *iter_array = (DBusMessageIter *) data;
-
-  dbus_message_iter_append_basic (iter_array, DBUS_TYPE_STRING, (gchar **) &item);
-}
-
-static DBusMessage *
-impl_getApplications (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  DBusMessage *reply = NULL;
-  DBusMessageIter iter, iter_array;
-  SpiRegistry *reg = SPI_REGISTRY (user_data);
-
-  reply = dbus_message_new_method_return (message);
-
-  dbus_message_iter_init_append (reply, &iter);
-  dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &iter_array);
-  g_sequence_foreach (reg->apps, add_bus_name_cb, &iter_array);
-  dbus_message_iter_close_container(&iter, &iter_array);
-  return reply;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static DBusMessage*
-impl_registerApplication (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  gchar *app_name;
-  SpiRegistry *reg = SPI_REGISTRY (user_data);
-
-  if (dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &app_name, DBUS_TYPE_INVALID))
-      add_application(bus, reg, app_name);
-  return NULL;
-}
-
-static DBusMessage*
-impl_deregisterApplication (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  gchar *app_name;
-  SpiRegistry *reg = SPI_REGISTRY (user_data);
-
-  if (dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &app_name, DBUS_TYPE_INVALID))
-      remove_application(bus, reg, app_name);
-  return NULL;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static void
-handle_disconnection (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  char *name, *old, *new;
-  SpiRegistry *reg = SPI_REGISTRY (user_data);
-
-  if (dbus_message_get_args (message, NULL,
-                             DBUS_TYPE_STRING, &name,
-                             DBUS_TYPE_STRING, &old,
-                             DBUS_TYPE_STRING, &new,
-                             DBUS_TYPE_INVALID))
-    {
-      if (*old != '\0' && *new == '\0')
-        {
-          remove_application(bus, reg, old);
-        }
-    }
-}
-
-/*---------------------------------------------------------------------------*/
-
-static DBusHandlerResult
-signal_filter (DBusConnection *bus, DBusMessage *message, void *user_data)
-{
-  SpiRegistry *registry = SPI_REGISTRY (user_data);
-  guint res = DBUS_HANDLER_RESULT_HANDLED;
-  const char *iface = dbus_message_get_interface (message);
-  const char *member = dbus_message_get_member (message);
-
-  if (!g_strcmp0(iface, DBUS_INTERFACE_DBUS) && !g_strcmp0(member, "NameOwnerChanged"))
-      handle_disconnection (bus, message, user_data);
-  else
-      res = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
-  return res;
-}
-
-/*---------------------------------------------------------------------------*/
-
-static gchar *app_sig_match_name_owner =
-       "type='signal', interface='org.freedesktop.DBus', member='NameOwnerChanged'";
-
-static DRouteMethod dev_methods[] =
-{
-  { impl_getApplications, "getApplications" },
-  { impl_registerApplication, "registerApplication" },
-  { impl_deregisterApplication, "deregisterApplication" },
-  { NULL, NULL }
-};
-
-SpiRegistry *
-spi_registry_new (DBusConnection *bus, DRouteContext *droute)
-{
-  SpiRegistry *reg = g_object_new (SPI_REGISTRY_TYPE, NULL);
-  DRoutePath *path;
-
-  reg->bus = bus;
-
-  dbus_bus_add_match (bus, app_sig_match_name_owner, NULL);
-  dbus_connection_add_filter (bus, signal_filter, reg, NULL);
-
-  path = droute_add_one (droute,
-                         SPI_DBUS_PATH_REGISTRY,
-                         reg);
-
-  droute_path_add_interface (path,
-                             SPI_DBUS_INTERFACE_REGISTRY,
-                             dev_methods,
-                             NULL);
-
-  return reg;
-}
-
-/*END------------------------------------------------------------------------*/
diff --git a/registryd/registry.h b/registryd/registry.h
deleted file mode 100644 (file)
index 68ec403..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001, 2002 Sun Microsystems Inc.,
- * Copyright 2001, 2002 Ximian, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef SPI_REGISTRY_H_
-#define SPI_REGISTRY_H_
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <droute/droute.h>
-
-typedef struct _SpiRegistry SpiRegistry;
-typedef struct _SpiRegistryClass SpiRegistryClass;
-
-G_BEGIN_DECLS
-
-#define SPI_REGISTRY_TYPE        (spi_registry_get_type ())
-#define SPI_REGISTRY(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_REGISTRY_TYPE, SpiRegistry))
-#define SPI_REGISTRY_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), SPI_REGISTRY_TYPE, SpiRegistryClass))
-#define SPI_IS_REGISTRY(o)       (G_TYPE_CHECK__INSTANCE_TYPE ((o), SPI_REGISTRY_TYPE))
-#define SPI_IS_REGISTRY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SPI_REGISTRY_TYPE))
-
-struct _SpiRegistry {
-  GObject      parent;
-  GSequence   *apps;
-
-  DBusConnection *bus;
-};
-
-struct _SpiRegistryClass {
-  GObjectClass parent_class;
-};
-
-GType        spi_registry_get_type (void);
-SpiRegistry *spi_registry_new      (DBusConnection *bus,
-                                    DRouteContext  *droute);
-
-G_END_DECLS
-
-#endif /* SPI_REGISTRY_H_ */
diff --git a/registryd/testregistry.py b/registryd/testregistry.py
deleted file mode 100644 (file)
index 86be32a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import dbus
-import dbus.service
-import gobject
-
-from dbus.mainloop.glib import DBusGMainLoop
-
-DBusGMainLoop(set_as_default=True)
-
-class IdleStateM (object):
-       def __init__(self, bus, loop):
-               self._bus = bus
-               self._loop = loop
-               self._func = self.setup
-
-       def idle_handler(self):
-               self._func = self._func()
-               if self._func == None:
-                       self._func = self.teardown
-               return True
-
-       def setup(self):
-               self.obj = self._bus.get_object("org.freedesktop.atspi.Registry",
-                                                "/org/freedesktop/atspi/registry",
-                                                introspect=False)
-               self.itf = dbus.Interface(self.obj, dbus_interface="org.freedesktop.atspi.Registry")
-               return self.register_apps
-
-       def register_apps(self):
-               #self.itf.registerApplication(":R456", ignore_reply=True)
-               #self.itf.registerApplication(":R123", ignore_reply=True)
-               return self.print_applications
-
-       def print_applications(self):
-               apps = self.itf.getApplications()
-               print apps
-               return self.teardown
-
-       def teardown(self):
-               self._loop.quit()
-
-def main(argv):
-       bus = dbus.SessionBus()
-       loop = gobject.MainLoop()
-       stateM = IdleStateM(bus, loop)
-       gobject.idle_add(stateM.idle_handler)
-       loop.run()
-
-if __name__=="__main__":
-       sys.exit(main(sys.argv))
diff --git a/registryd/ucs2keysym.c b/registryd/ucs2keysym.c
deleted file mode 100644 (file)
index d568845..0000000
+++ /dev/null
@@ -1,854 +0,0 @@
-/* Modified from the public domain program keysym2ucs.c,
- * as documented below.
- *
- * This module converts ISO 10646
- * (UCS, Unicode) values into X Keysym values.
- *
- * The array keysymtab[] contains pairs of X11 keysym values for graphical
- * characters and the corresponding Unicode value. The function
- * keysym2ucs() maps a Unicode value onto a keysym using a binary search,
- * therefore keysymtab[] must remain SORTED by ucs2 value.
- *
- * We allow to represent any UCS character in the range U-00000000 to
- * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
- * This admittedly does not cover the entire 31-bit space of UCS, but
- * it does cover all of the characters up to U-10FFFF, which can be
- * represented by UTF-16, and more, and it is very unlikely that higher
- * UCS codes will ever be assigned by ISO. So to get Unicode character
- * U+ABCD you can directly use keysym 0x0100abcd.
- *
- * NOTE: The comments in the table below contain the actual character
- * encoded in UTF-8, so for viewing and editing best use an editor in
- * UTF-8 mode.
- *
- * Author: Markus G. Kuhn <http://www.cl.cam.ac.uk/~mgk25/>,
- *         University of Cambridge, April 2001
- *
- * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
- * an initial draft of the mapping table.
- *
- * This software is in the public domain. Share and enjoy!
- *
- */
-
-#include <X11/X.h>
-
-struct codepair {
-  unsigned short keysym;
-  unsigned short ucs;
-} keysymtab[] = {
-  { 0x0ba3, 0x003c }, /*                   leftcaret < LESS-THAN SIGN */
-  { 0x0ba6, 0x003e }, /*                  rightcaret > GREATER-THAN SIGN */
-  { 0x0bc6, 0x005f }, /*                    underbar _ LOW LINE */
-  { 0x0bc0, 0x00af }, /*                     overbar ¯ MACRON */
-
-  { 0x01a1, 0x0104 }, /*                     Aogonek Ą LATIN CAPITAL LETTER A WITH OGONEK */
-  { 0x01b1, 0x0105 }, /*                     aogonek ą LATIN SMALL LETTER A WITH OGONEK */
-  { 0x01a5, 0x013d }, /*                      Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */
-  { 0x01a3, 0x0141 }, /*                     Lstroke Ł LATIN CAPITAL LETTER L WITH STROKE */
-  { 0x01a6, 0x015a }, /*                      Sacute Ś LATIN CAPITAL LETTER S WITH ACUTE */
-  { 0x01aa, 0x015e }, /*                    Scedilla Ş LATIN CAPITAL LETTER S WITH CEDILLA */
-  { 0x01a9, 0x0160 }, /*                      Scaron Š LATIN CAPITAL LETTER S WITH CARON */
-  { 0x01ab, 0x0164 }, /*                      Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */
-  { 0x01ac, 0x0179 }, /*                      Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */
-  { 0x01af, 0x017b }, /*                   Zabovedot Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE */
-  { 0x01ae, 0x017d }, /*                      Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */
-  { 0x01b3, 0x0142 }, /*                     lstroke ł LATIN SMALL LETTER L WITH STROKE */
-  { 0x01b5, 0x013e }, /*                      lcaron ľ LATIN SMALL LETTER L WITH CARON */
-  { 0x01b6, 0x015b }, /*                      sacute ś LATIN SMALL LETTER S WITH ACUTE */
-  { 0x01b9, 0x0161 }, /*                      scaron š LATIN SMALL LETTER S WITH CARON */
-  { 0x01ba, 0x015f }, /*                    scedilla ş LATIN SMALL LETTER S WITH CEDILLA */
-  { 0x01bb, 0x0165 }, /*                      tcaron ť LATIN SMALL LETTER T WITH CARON */
-  { 0x01bc, 0x017a }, /*                      zacute ź LATIN SMALL LETTER Z WITH ACUTE */
-  { 0x01be, 0x017e }, /*                      zcaron ž LATIN SMALL LETTER Z WITH CARON */
-  { 0x01bf, 0x017c }, /*                   zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */
-  { 0x01c0, 0x0154 }, /*                      Racute Ŕ LATIN CAPITAL LETTER R WITH ACUTE */
-  { 0x01c3, 0x0102 }, /*                      Abreve Ă LATIN CAPITAL LETTER A WITH BREVE */
-  { 0x01c5, 0x0139 }, /*                      Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */
-  { 0x01c6, 0x0106 }, /*                      Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */
-  { 0x01c8, 0x010c }, /*                      Ccaron Č LATIN CAPITAL LETTER C WITH CARON */
-  { 0x01ca, 0x0118 }, /*                     Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */
-  { 0x01cc, 0x011a }, /*                      Ecaron Ě LATIN CAPITAL LETTER E WITH CARON */
-  { 0x01cf, 0x010e }, /*                      Dcaron Ď LATIN CAPITAL LETTER D WITH CARON */
-  { 0x01d0, 0x0110 }, /*                     Dstroke Đ LATIN CAPITAL LETTER D WITH STROKE */
-  { 0x01d1, 0x0143 }, /*                      Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */
-  { 0x01d2, 0x0147 }, /*                      Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */
-  { 0x01d5, 0x0150 }, /*                Odoubleacute Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
-  { 0x01d8, 0x0158 }, /*                      Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */
-  { 0x01d9, 0x016e }, /*                       Uring Ů LATIN CAPITAL LETTER U WITH RING ABOVE */
-  { 0x01db, 0x0170 }, /*                Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
-  { 0x01de, 0x0162 }, /*                    Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */
-  { 0x01e0, 0x0155 }, /*                      racute ŕ LATIN SMALL LETTER R WITH ACUTE */
-  { 0x01e3, 0x0103 }, /*                      abreve ă LATIN SMALL LETTER A WITH BREVE */
-  { 0x01e5, 0x013a }, /*                      lacute ĺ LATIN SMALL LETTER L WITH ACUTE */
-  { 0x01e6, 0x0107 }, /*                      cacute ć LATIN SMALL LETTER C WITH ACUTE */
-  { 0x01e8, 0x010d }, /*                      ccaron č LATIN SMALL LETTER C WITH CARON */
-  { 0x01ea, 0x0119 }, /*                     eogonek ę LATIN SMALL LETTER E WITH OGONEK */
-  { 0x01ec, 0x011b }, /*                      ecaron ě LATIN SMALL LETTER E WITH CARON */
-  { 0x01ef, 0x010f }, /*                      dcaron ď LATIN SMALL LETTER D WITH CARON */
-  { 0x01f0, 0x0111 }, /*                     dstroke đ LATIN SMALL LETTER D WITH STROKE */
-  { 0x01f1, 0x0144 }, /*                      nacute ń LATIN SMALL LETTER N WITH ACUTE */
-  { 0x01f2, 0x0148 }, /*                      ncaron ň LATIN SMALL LETTER N WITH CARON */
-  { 0x01f5, 0x0151 }, /*                odoubleacute ő LATIN SMALL LETTER O WITH DOUBLE ACUTE */
-  { 0x01f8, 0x0159 }, /*                      rcaron ř LATIN SMALL LETTER R WITH CARON */
-  { 0x01f9, 0x016f }, /*                       uring ů LATIN SMALL LETTER U WITH RING ABOVE */
-  { 0x01fb, 0x0171 }, /*                udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */
-  { 0x01fe, 0x0163 }, /*                    tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */
-  { 0x02a1, 0x0126 }, /*                     Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */
-  { 0x02a6, 0x0124 }, /*                 Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
-  { 0x02a9, 0x0130 }, /*                   Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */
-  { 0x02ab, 0x011e }, /*                      Gbreve Ğ LATIN CAPITAL LETTER G WITH BREVE */
-  { 0x02ac, 0x0134 }, /*                 Jcircumflex Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
-  { 0x02b1, 0x0127 }, /*                     hstroke ħ LATIN SMALL LETTER H WITH STROKE */
-  { 0x02b6, 0x0125 }, /*                 hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
-  { 0x02b9, 0x0131 }, /*                    idotless ı LATIN SMALL LETTER DOTLESS I */
-  { 0x02bb, 0x011f }, /*                      gbreve ğ LATIN SMALL LETTER G WITH BREVE */
-  { 0x02bc, 0x0135 }, /*                 jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */
-  { 0x02c5, 0x010a }, /*                   Cabovedot Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE */
-  { 0x02c6, 0x0108 }, /*                 Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
-  { 0x02d5, 0x0120 }, /*                   Gabovedot Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE */
-  { 0x02d8, 0x011c }, /*                 Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
-  { 0x02dd, 0x016c }, /*                      Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */
-  { 0x02de, 0x015c }, /*                 Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
-  { 0x02e5, 0x010b }, /*                   cabovedot ċ LATIN SMALL LETTER C WITH DOT ABOVE */
-  { 0x02e6, 0x0109 }, /*                 ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */
-  { 0x02f5, 0x0121 }, /*                   gabovedot ġ LATIN SMALL LETTER G WITH DOT ABOVE */
-  { 0x02f8, 0x011d }, /*                 gcircumflex ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX */
-  { 0x02fd, 0x016d }, /*                      ubreve ŭ LATIN SMALL LETTER U WITH BREVE */
-  { 0x02fe, 0x015d }, /*                 scircumflex ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX */
-  { 0x03a2, 0x0138 }, /*                         kra ĸ LATIN SMALL LETTER KRA */
-  { 0x03a3, 0x0156 }, /*                    Rcedilla Ŗ LATIN CAPITAL LETTER R WITH CEDILLA */
-  { 0x03a5, 0x0128 }, /*                      Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */
-  { 0x03a6, 0x013b }, /*                    Lcedilla Ļ LATIN CAPITAL LETTER L WITH CEDILLA */
-  { 0x03aa, 0x0112 }, /*                     Emacron Ē LATIN CAPITAL LETTER E WITH MACRON */
-  { 0x03ab, 0x0122 }, /*                    Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */
-  { 0x03ac, 0x0166 }, /*                      Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */
-  { 0x03b3, 0x0157 }, /*                    rcedilla ŗ LATIN SMALL LETTER R WITH CEDILLA */
-  { 0x03b5, 0x0129 }, /*                      itilde ĩ LATIN SMALL LETTER I WITH TILDE */
-  { 0x03b6, 0x013c }, /*                    lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */
-  { 0x03ba, 0x0113 }, /*                     emacron ē LATIN SMALL LETTER E WITH MACRON */
-  { 0x03bb, 0x0123 }, /*                    gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */
-  { 0x03bc, 0x0167 }, /*                      tslash ŧ LATIN SMALL LETTER T WITH STROKE */
-  { 0x03bd, 0x014a }, /*                         ENG Ŋ LATIN CAPITAL LETTER ENG */
-  { 0x03bf, 0x014b }, /*                         eng ŋ LATIN SMALL LETTER ENG */
-  { 0x03c0, 0x0100 }, /*                     Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */
-  { 0x03c7, 0x012e }, /*                     Iogonek Į LATIN CAPITAL LETTER I WITH OGONEK */
-  { 0x03cc, 0x0116 }, /*                   Eabovedot Ė LATIN CAPITAL LETTER E WITH DOT ABOVE */
-  { 0x03cf, 0x012a }, /*                     Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */
-  { 0x03d1, 0x0145 }, /*                    Ncedilla Ņ LATIN CAPITAL LETTER N WITH CEDILLA */
-  { 0x03d2, 0x014c }, /*                     Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */
-  { 0x03d3, 0x0136 }, /*                    Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */
-  { 0x03d9, 0x0172 }, /*                     Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */
-  { 0x03dd, 0x0168 }, /*                      Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */
-  { 0x03de, 0x016a }, /*                     Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */
-  { 0x03e0, 0x0101 }, /*                     amacron ā LATIN SMALL LETTER A WITH MACRON */
-  { 0x03e7, 0x012f }, /*                     iogonek į LATIN SMALL LETTER I WITH OGONEK */
-  { 0x03ec, 0x0117 }, /*                   eabovedot ė LATIN SMALL LETTER E WITH DOT ABOVE */
-  { 0x03ef, 0x012b }, /*                     imacron ī LATIN SMALL LETTER I WITH MACRON */
-  { 0x03f1, 0x0146 }, /*                    ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */
-  { 0x03f2, 0x014d }, /*                     omacron ō LATIN SMALL LETTER O WITH MACRON */
-  { 0x03f3, 0x0137 }, /*                    kcedilla ķ LATIN SMALL LETTER K WITH CEDILLA */
-  { 0x03f9, 0x0173 }, /*                     uogonek ų LATIN SMALL LETTER U WITH OGONEK */
-  { 0x03fd, 0x0169 }, /*                      utilde ũ LATIN SMALL LETTER U WITH TILDE */
-  { 0x03fe, 0x016b }, /*                     umacron ū LATIN SMALL LETTER U WITH MACRON */
-  { 0x08f6, 0x0192 }, /*                    function ƒ LATIN SMALL LETTER F WITH HOOK */
-  { 0x13bc, 0x0152 }, /*                          OE Œ LATIN CAPITAL LIGATURE OE */
-  { 0x13bd, 0x0153 }, /*                          oe œ LATIN SMALL LIGATURE OE */
-  { 0x13be, 0x0178 }, /*                  Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
-
-  { 0x01b7, 0x02c7 }, /*                       caron ˇ CARON */
-  { 0x01a2, 0x02d8 }, /*                       breve ˘ BREVE */
-  { 0x01ff, 0x02d9 }, /*                    abovedot ˙ DOT ABOVE */
-  { 0x01b2, 0x02db }, /*                      ogonek ˛ OGONEK */
-  { 0x01bd, 0x02dd }, /*                 doubleacute ˝ DOUBLE ACUTE ACCENT */
-
-  { 0x07ae, 0x0385 }, /*        Greek_accentdieresis ΅ GREEK DIALYTIKA TONOS */
-  { 0x07a1, 0x0386 }, /*           Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */
-  { 0x07a2, 0x0388 }, /*         Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */
-  { 0x07a3, 0x0389 }, /*             Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */
-  { 0x07a4, 0x038a }, /*            Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */
-  { 0x07a7, 0x038c }, /*         Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */
-  { 0x07a8, 0x038e }, /*         Greek_UPSILONaccent Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS */
-  { 0x07ab, 0x038f }, /*           Greek_OMEGAaccent Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS */
-  { 0x07b6, 0x0390 }, /*    Greek_iotaaccentdieresis ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
-  { 0x07c1, 0x0391 }, /*                 Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */
-  { 0x07c2, 0x0392 }, /*                  Greek_BETA Β GREEK CAPITAL LETTER BETA */
-  { 0x07c3, 0x0393 }, /*                 Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */
-  { 0x07c4, 0x0394 }, /*                 Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */
-  { 0x07c5, 0x0395 }, /*               Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */
-  { 0x07c6, 0x0396 }, /*                  Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */
-  { 0x07c7, 0x0397 }, /*                   Greek_ETA Η GREEK CAPITAL LETTER ETA */
-  { 0x07c8, 0x0398 }, /*                 Greek_THETA Θ GREEK CAPITAL LETTER THETA */
-  { 0x07c9, 0x0399 }, /*                  Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */
-  { 0x07ca, 0x039a }, /*                 Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */
-  { 0x07cb, 0x039b }, /*                Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */
-  { 0x07cc, 0x039c }, /*                    Greek_MU Μ GREEK CAPITAL LETTER MU */
-  { 0x07cd, 0x039d }, /*                    Greek_NU Ν GREEK CAPITAL LETTER NU */
-  { 0x07ce, 0x039e }, /*                    Greek_XI Ξ GREEK CAPITAL LETTER XI */
-  { 0x07cf, 0x039f }, /*               Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */
-  { 0x07d0, 0x03a0 }, /*                    Greek_PI Π GREEK CAPITAL LETTER PI */
-  { 0x07d1, 0x03a1 }, /*                   Greek_RHO Ρ GREEK CAPITAL LETTER RHO */
-  { 0x07d2, 0x03a3 }, /*                 Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */
-  { 0x07d4, 0x03a4 }, /*                   Greek_TAU Τ GREEK CAPITAL LETTER TAU */
-  { 0x07d5, 0x03a5 }, /*               Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */
-  { 0x07d6, 0x03a6 }, /*                   Greek_PHI Φ GREEK CAPITAL LETTER PHI */
-  { 0x07d7, 0x03a7 }, /*                   Greek_CHI Χ GREEK CAPITAL LETTER CHI */
-  { 0x07d8, 0x03a8 }, /*                   Greek_PSI Ψ GREEK CAPITAL LETTER PSI */
-  { 0x07d9, 0x03a9 }, /*                 Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */
-  { 0x07a5, 0x03aa }, /*         Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
-  { 0x07a9, 0x03ab }, /*       Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
-  { 0x07b1, 0x03ac }, /*           Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */
-  { 0x07b2, 0x03ad }, /*         Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */
-  { 0x07b3, 0x03ae }, /*             Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */
-  { 0x07b4, 0x03af }, /*            Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */
-  { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
-  { 0x07e1, 0x03b1 }, /*                 Greek_alpha α GREEK SMALL LETTER ALPHA */
-  { 0x07e2, 0x03b2 }, /*                  Greek_beta β GREEK SMALL LETTER BETA */
-  { 0x07e3, 0x03b3 }, /*                 Greek_gamma γ GREEK SMALL LETTER GAMMA */
-  { 0x07e4, 0x03b4 }, /*                 Greek_delta δ GREEK SMALL LETTER DELTA */
-  { 0x07e5, 0x03b5 }, /*               Greek_epsilon ε GREEK SMALL LETTER EPSILON */
-  { 0x07e6, 0x03b6 }, /*                  Greek_zeta ζ GREEK SMALL LETTER ZETA */
-  { 0x07e7, 0x03b7 }, /*                   Greek_eta η GREEK SMALL LETTER ETA */
-  { 0x07e8, 0x03b8 }, /*                 Greek_theta θ GREEK SMALL LETTER THETA */
-  { 0x07e9, 0x03b9 }, /*                  Greek_iota ι GREEK SMALL LETTER IOTA */
-  { 0x07ea, 0x03ba }, /*                 Greek_kappa κ GREEK SMALL LETTER KAPPA */
-  { 0x07eb, 0x03bb }, /*                Greek_lambda λ GREEK SMALL LETTER LAMDA */
-  { 0x07ec, 0x03bc }, /*                    Greek_mu μ GREEK SMALL LETTER MU */
-  { 0x07ed, 0x03bd }, /*                    Greek_nu ν GREEK SMALL LETTER NU */
-  { 0x07ee, 0x03be }, /*                    Greek_xi ξ GREEK SMALL LETTER XI */
-  { 0x07ef, 0x03bf }, /*               Greek_omicron ο GREEK SMALL LETTER OMICRON */
-  { 0x07f0, 0x03c0 }, /*                    Greek_pi π GREEK SMALL LETTER PI */
-  { 0x07f1, 0x03c1 }, /*                   Greek_rho ρ GREEK SMALL LETTER RHO */
-  { 0x07f3, 0x03c2 }, /*       Greek_finalsmallsigma ς GREEK SMALL LETTER FINAL SIGMA */
-  { 0x07f2, 0x03c3 }, /*                 Greek_sigma σ GREEK SMALL LETTER SIGMA */
-  { 0x07f4, 0x03c4 }, /*                   Greek_tau τ GREEK SMALL LETTER TAU */
-  { 0x07f5, 0x03c5 }, /*               Greek_upsilon υ GREEK SMALL LETTER UPSILON */
-  { 0x07f6, 0x03c6 }, /*                   Greek_phi φ GREEK SMALL LETTER PHI */
-  { 0x07f7, 0x03c7 }, /*                   Greek_chi χ GREEK SMALL LETTER CHI */
-  { 0x07f8, 0x03c8 }, /*                   Greek_psi ψ GREEK SMALL LETTER PSI */
-  { 0x07f9, 0x03c9 }, /*                 Greek_omega ω GREEK SMALL LETTER OMEGA */
-  { 0x07b5, 0x03ca }, /*          Greek_iotadieresis ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
-  { 0x07b9, 0x03cb }, /*       Greek_upsilondieresis ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
-  { 0x07b7, 0x03cc }, /*         Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */
-  { 0x07b8, 0x03cd }, /*         Greek_upsilonaccent ύ GREEK SMALL LETTER UPSILON WITH TONOS */
-  { 0x07bb, 0x03ce }, /*           Greek_omegaaccent ώ GREEK SMALL LETTER OMEGA WITH TONOS */
-
-  { 0x06b3, 0x0401 }, /*                 Cyrillic_IO Ё CYRILLIC CAPITAL LETTER IO */
-  { 0x06b1, 0x0402 }, /*                 Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */
-  { 0x06b2, 0x0403 }, /*               Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */
-  { 0x06b4, 0x0404 }, /*                Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */
-  { 0x06b5, 0x0405 }, /*               Macedonia_DSE Ѕ CYRILLIC CAPITAL LETTER DZE */
-  { 0x06b6, 0x0406 }, /*                 Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
-  { 0x06b7, 0x0407 }, /*                Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */
-  { 0x06b8, 0x0408 }, /*                 Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */
-  { 0x06b9, 0x0409 }, /*                Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */
-  { 0x06ba, 0x040a }, /*                Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */
-  { 0x06bb, 0x040b }, /*                Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */
-  { 0x06bc, 0x040c }, /*               Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */
-  { 0x06be, 0x040e }, /*         Byelorussian_SHORTU Ў CYRILLIC CAPITAL LETTER SHORT U */
-  { 0x06bf, 0x040f }, /*               Cyrillic_DZHE Џ CYRILLIC CAPITAL LETTER DZHE */
-  { 0x06e1, 0x0410 }, /*                  Cyrillic_A А CYRILLIC CAPITAL LETTER A */
-  { 0x06e2, 0x0411 }, /*                 Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */
-  { 0x06f7, 0x0412 }, /*                 Cyrillic_VE В CYRILLIC CAPITAL LETTER VE */
-  { 0x06e7, 0x0413 }, /*                Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */
-  { 0x06e4, 0x0414 }, /*                 Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */
-  { 0x06e5, 0x0415 }, /*                 Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */
-  { 0x06f6, 0x0416 }, /*                Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */
-  { 0x06fa, 0x0417 }, /*                 Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */
-  { 0x06e9, 0x0418 }, /*                  Cyrillic_I И CYRILLIC CAPITAL LETTER I */
-  { 0x06ea, 0x0419 }, /*             Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */
-  { 0x06eb, 0x041a }, /*                 Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */
-  { 0x06ec, 0x041b }, /*                 Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */
-  { 0x06ed, 0x041c }, /*                 Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */
-  { 0x06ee, 0x041d }, /*                 Cyrillic_EN Н CYRILLIC CAPITAL LETTER EN */
-  { 0x06ef, 0x041e }, /*                  Cyrillic_O О CYRILLIC CAPITAL LETTER O */
-  { 0x06f0, 0x041f }, /*                 Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */
-  { 0x06f2, 0x0420 }, /*                 Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */
-  { 0x06f3, 0x0421 }, /*                 Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */
-  { 0x06f4, 0x0422 }, /*                 Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */
-  { 0x06f5, 0x0423 }, /*                  Cyrillic_U У CYRILLIC CAPITAL LETTER U */
-  { 0x06e6, 0x0424 }, /*                 Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */
-  { 0x06e8, 0x0425 }, /*                 Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */
-  { 0x06e3, 0x0426 }, /*                Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */
-  { 0x06fe, 0x0427 }, /*                Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */
-  { 0x06fb, 0x0428 }, /*                Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */
-  { 0x06fd, 0x0429 }, /*              Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */
-  { 0x06ff, 0x042a }, /*           Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */
-  { 0x06f9, 0x042b }, /*               Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */
-  { 0x06f8, 0x042c }, /*           Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */
-  { 0x06fc, 0x042d }, /*                  Cyrillic_E Э CYRILLIC CAPITAL LETTER E */
-  { 0x06e0, 0x042e }, /*                 Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */
-  { 0x06f1, 0x042f }, /*                 Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */
-  { 0x06c1, 0x0430 }, /*                  Cyrillic_a а CYRILLIC SMALL LETTER A */
-  { 0x06c2, 0x0431 }, /*                 Cyrillic_be б CYRILLIC SMALL LETTER BE */
-  { 0x06d7, 0x0432 }, /*                 Cyrillic_ve в CYRILLIC SMALL LETTER VE */
-  { 0x06c7, 0x0433 }, /*                Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */
-  { 0x06c4, 0x0434 }, /*                 Cyrillic_de д CYRILLIC SMALL LETTER DE */
-  { 0x06c5, 0x0435 }, /*                 Cyrillic_ie е CYRILLIC SMALL LETTER IE */
-  { 0x06d6, 0x0436 }, /*                Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */
-  { 0x06da, 0x0437 }, /*                 Cyrillic_ze з CYRILLIC SMALL LETTER ZE */
-  { 0x06c9, 0x0438 }, /*                  Cyrillic_i и CYRILLIC SMALL LETTER I */
-  { 0x06ca, 0x0439 }, /*             Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */
-  { 0x06cb, 0x043a }, /*                 Cyrillic_ka к CYRILLIC SMALL LETTER KA */
-  { 0x06cc, 0x043b }, /*                 Cyrillic_el л CYRILLIC SMALL LETTER EL */
-  { 0x06cd, 0x043c }, /*                 Cyrillic_em м CYRILLIC SMALL LETTER EM */
-  { 0x06ce, 0x043d }, /*                 Cyrillic_en н CYRILLIC SMALL LETTER EN */
-  { 0x06cf, 0x043e }, /*                  Cyrillic_o о CYRILLIC SMALL LETTER O */
-  { 0x06d0, 0x043f }, /*                 Cyrillic_pe п CYRILLIC SMALL LETTER PE */
-  { 0x06d2, 0x0440 }, /*                 Cyrillic_er р CYRILLIC SMALL LETTER ER */
-  { 0x06d3, 0x0441 }, /*                 Cyrillic_es с CYRILLIC SMALL LETTER ES */
-  { 0x06d4, 0x0442 }, /*                 Cyrillic_te т CYRILLIC SMALL LETTER TE */
-  { 0x06d5, 0x0443 }, /*                  Cyrillic_u у CYRILLIC SMALL LETTER U */
-  { 0x06c6, 0x0444 }, /*                 Cyrillic_ef ф CYRILLIC SMALL LETTER EF */
-  { 0x06c8, 0x0445 }, /*                 Cyrillic_ha х CYRILLIC SMALL LETTER HA */
-  { 0x06c3, 0x0446 }, /*                Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */
-  { 0x06de, 0x0447 }, /*                Cyrillic_che ч CYRILLIC SMALL LETTER CHE */
-  { 0x06db, 0x0448 }, /*                Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */
-  { 0x06dd, 0x0449 }, /*              Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */
-  { 0x06df, 0x044a }, /*           Cyrillic_hardsign ъ CYRILLIC SMALL LETTER HARD SIGN */
-  { 0x06d9, 0x044b }, /*               Cyrillic_yeru ы CYRILLIC SMALL LETTER YERU */
-  { 0x06d8, 0x044c }, /*           Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */
-  { 0x06dc, 0x044d }, /*                  Cyrillic_e э CYRILLIC SMALL LETTER E */
-  { 0x06c0, 0x044e }, /*                 Cyrillic_yu ю CYRILLIC SMALL LETTER YU */
-  { 0x06d1, 0x044f }, /*                 Cyrillic_ya я CYRILLIC SMALL LETTER YA */
-  { 0x06a3, 0x0451 }, /*                 Cyrillic_io ё CYRILLIC SMALL LETTER IO */
-  { 0x06a1, 0x0452 }, /*                 Serbian_dje ђ CYRILLIC SMALL LETTER DJE */
-  { 0x06a2, 0x0453 }, /*               Macedonia_gje ѓ CYRILLIC SMALL LETTER GJE */
-  { 0x06a4, 0x0454 }, /*                Ukrainian_ie є CYRILLIC SMALL LETTER UKRAINIAN IE */
-  { 0x06a5, 0x0455 }, /*               Macedonia_dse ѕ CYRILLIC SMALL LETTER DZE */
-  { 0x06a6, 0x0456 }, /*                 Ukrainian_i і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
-  { 0x06a7, 0x0457 }, /*                Ukrainian_yi ї CYRILLIC SMALL LETTER YI */
-  { 0x06a8, 0x0458 }, /*                 Cyrillic_je ј CYRILLIC SMALL LETTER JE */
-  { 0x06a9, 0x0459 }, /*                Cyrillic_lje љ CYRILLIC SMALL LETTER LJE */
-  { 0x06aa, 0x045a }, /*                Cyrillic_nje њ CYRILLIC SMALL LETTER NJE */
-  { 0x06ab, 0x045b }, /*                Serbian_tshe ћ CYRILLIC SMALL LETTER TSHE */
-  { 0x06ac, 0x045c }, /*               Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */
-  { 0x06ae, 0x045e }, /*         Byelorussian_shortu ў CYRILLIC SMALL LETTER SHORT U */
-  { 0x06af, 0x045f }, /*               Cyrillic_dzhe џ CYRILLIC SMALL LETTER DZHE */
-
-  { 0x0ce0, 0x05d0 }, /*                hebrew_aleph א HEBREW LETTER ALEF */
-  { 0x0ce1, 0x05d1 }, /*                  hebrew_bet ב HEBREW LETTER BET */
-  { 0x0ce2, 0x05d2 }, /*                hebrew_gimel ג HEBREW LETTER GIMEL */
-  { 0x0ce3, 0x05d3 }, /*                hebrew_dalet ד HEBREW LETTER DALET */
-  { 0x0ce4, 0x05d4 }, /*                   hebrew_he ה HEBREW LETTER HE */
-  { 0x0ce5, 0x05d5 }, /*                  hebrew_waw ו HEBREW LETTER VAV */
-  { 0x0ce6, 0x05d6 }, /*                 hebrew_zain ז HEBREW LETTER ZAYIN */
-  { 0x0ce7, 0x05d7 }, /*                 hebrew_chet ח HEBREW LETTER HET */
-  { 0x0ce8, 0x05d8 }, /*                  hebrew_tet ט HEBREW LETTER TET */
-  { 0x0ce9, 0x05d9 }, /*                  hebrew_yod י HEBREW LETTER YOD */
-  { 0x0cea, 0x05da }, /*            hebrew_finalkaph ך HEBREW LETTER FINAL KAF */
-  { 0x0ceb, 0x05db }, /*                 hebrew_kaph כ HEBREW LETTER KAF */
-  { 0x0cec, 0x05dc }, /*                hebrew_lamed ל HEBREW LETTER LAMED */
-  { 0x0ced, 0x05dd }, /*             hebrew_finalmem ם HEBREW LETTER FINAL MEM */
-  { 0x0cee, 0x05de }, /*                  hebrew_mem מ HEBREW LETTER MEM */
-  { 0x0cef, 0x05df }, /*             hebrew_finalnun ן HEBREW LETTER FINAL NUN */
-  { 0x0cf0, 0x05e0 }, /*                  hebrew_nun נ HEBREW LETTER NUN */
-  { 0x0cf1, 0x05e1 }, /*               hebrew_samech ס HEBREW LETTER SAMEKH */
-  { 0x0cf2, 0x05e2 }, /*                 hebrew_ayin ע HEBREW LETTER AYIN */
-  { 0x0cf3, 0x05e3 }, /*              hebrew_finalpe ף HEBREW LETTER FINAL PE */
-  { 0x0cf4, 0x05e4 }, /*                   hebrew_pe פ HEBREW LETTER PE */
-  { 0x0cf5, 0x05e5 }, /*            hebrew_finalzade ץ HEBREW LETTER FINAL TSADI */
-  { 0x0cf6, 0x05e6 }, /*                 hebrew_zade צ HEBREW LETTER TSADI */
-  { 0x0cf7, 0x05e7 }, /*                 hebrew_qoph ק HEBREW LETTER QOF */
-  { 0x0cf8, 0x05e8 }, /*                 hebrew_resh ר HEBREW LETTER RESH */
-  { 0x0cf9, 0x05e9 }, /*                 hebrew_shin ש HEBREW LETTER SHIN */
-  { 0x0cfa, 0x05ea }, /*                  hebrew_taw ת HEBREW LETTER TAV */
-
-  { 0x05ac, 0x060c }, /*                Arabic_comma ، ARABIC COMMA */
-  { 0x05bb, 0x061b }, /*            Arabic_semicolon ؛ ARABIC SEMICOLON */
-  { 0x05bf, 0x061f }, /*        Arabic_question_mark ؟ ARABIC QUESTION MARK */
-  { 0x05c1, 0x0621 }, /*                Arabic_hamza ء ARABIC LETTER HAMZA */
-  { 0x05c2, 0x0622 }, /*          Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */
-  { 0x05c3, 0x0623 }, /*          Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */
-  { 0x05c4, 0x0624 }, /*           Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */
-  { 0x05c5, 0x0625 }, /*       Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */
-  { 0x05c6, 0x0626 }, /*           Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */
-  { 0x05c7, 0x0627 }, /*                 Arabic_alef ا ARABIC LETTER ALEF */
-  { 0x05c8, 0x0628 }, /*                  Arabic_beh ب ARABIC LETTER BEH */
-  { 0x05c9, 0x0629 }, /*           Arabic_tehmarbuta ة ARABIC LETTER TEH MARBUTA */
-  { 0x05ca, 0x062a }, /*                  Arabic_teh ت ARABIC LETTER TEH */
-  { 0x05cb, 0x062b }, /*                 Arabic_theh ث ARABIC LETTER THEH */
-  { 0x05cc, 0x062c }, /*                 Arabic_jeem ج ARABIC LETTER JEEM */
-  { 0x05cd, 0x062d }, /*                  Arabic_hah ح ARABIC LETTER HAH */
-  { 0x05ce, 0x062e }, /*                 Arabic_khah خ ARABIC LETTER KHAH */
-  { 0x05cf, 0x062f }, /*                  Arabic_dal د ARABIC LETTER DAL */
-  { 0x05d0, 0x0630 }, /*                 Arabic_thal ذ ARABIC LETTER THAL */
-  { 0x05d1, 0x0631 }, /*                   Arabic_ra ر ARABIC LETTER REH */
-  { 0x05d2, 0x0632 }, /*                 Arabic_zain ز ARABIC LETTER ZAIN */
-  { 0x05d3, 0x0633 }, /*                 Arabic_seen س ARABIC LETTER SEEN */
-  { 0x05d4, 0x0634 }, /*                Arabic_sheen ش ARABIC LETTER SHEEN */
-  { 0x05d5, 0x0635 }, /*                  Arabic_sad ص ARABIC LETTER SAD */
-  { 0x05d6, 0x0636 }, /*                  Arabic_dad ض ARABIC LETTER DAD */
-  { 0x05d7, 0x0637 }, /*                  Arabic_tah ط ARABIC LETTER TAH */
-  { 0x05d8, 0x0638 }, /*                  Arabic_zah ظ ARABIC LETTER ZAH */
-  { 0x05d9, 0x0639 }, /*                  Arabic_ain ع ARABIC LETTER AIN */
-  { 0x05da, 0x063a }, /*                Arabic_ghain غ ARABIC LETTER GHAIN */
-  { 0x05e0, 0x0640 }, /*              Arabic_tatweel ـ ARABIC TATWEEL */
-  { 0x05e1, 0x0641 }, /*                  Arabic_feh ف ARABIC LETTER FEH */
-  { 0x05e2, 0x0642 }, /*                  Arabic_qaf ق ARABIC LETTER QAF */
-  { 0x05e3, 0x0643 }, /*                  Arabic_kaf ك ARABIC LETTER KAF */
-  { 0x05e4, 0x0644 }, /*                  Arabic_lam ل ARABIC LETTER LAM */
-  { 0x05e5, 0x0645 }, /*                 Arabic_meem م ARABIC LETTER MEEM */
-  { 0x05e6, 0x0646 }, /*                 Arabic_noon ن ARABIC LETTER NOON */
-  { 0x05e7, 0x0647 }, /*                   Arabic_ha ه ARABIC LETTER HEH */
-  { 0x05e8, 0x0648 }, /*                  Arabic_waw و ARABIC LETTER WAW */
-  { 0x05e9, 0x0649 }, /*          Arabic_alefmaksura ى ARABIC LETTER ALEF MAKSURA */
-  { 0x05ea, 0x064a }, /*                  Arabic_yeh ي ARABIC LETTER YEH */
-  { 0x05eb, 0x064b }, /*             Arabic_fathatan ً ARABIC FATHATAN */
-  { 0x05ec, 0x064c }, /*             Arabic_dammatan ٌ ARABIC DAMMATAN */
-  { 0x05ed, 0x064d }, /*             Arabic_kasratan ٍ ARABIC KASRATAN */
-  { 0x05ee, 0x064e }, /*                Arabic_fatha َ ARABIC FATHA */
-  { 0x05ef, 0x064f }, /*                Arabic_damma ُ ARABIC DAMMA */
-  { 0x05f0, 0x0650 }, /*                Arabic_kasra ِ ARABIC KASRA */
-  { 0x05f1, 0x0651 }, /*               Arabic_shadda ّ ARABIC SHADDA */
-  { 0x05f2, 0x0652 }, /*                Arabic_sukun ْ ARABIC SUKUN */
-
-  { 0x0da1, 0x0e01 }, /*                  Thai_kokai ก THAI CHARACTER KO KAI */
-  { 0x0da2, 0x0e02 }, /*                Thai_khokhai ข THAI CHARACTER KHO KHAI */
-  { 0x0da3, 0x0e03 }, /*               Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */
-  { 0x0da4, 0x0e04 }, /*               Thai_khokhwai ค THAI CHARACTER KHO KHWAI */
-  { 0x0da5, 0x0e05 }, /*                Thai_khokhon ฅ THAI CHARACTER KHO KHON */
-  { 0x0da6, 0x0e06 }, /*             Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */
-  { 0x0da7, 0x0e07 }, /*                 Thai_ngongu ง THAI CHARACTER NGO NGU */
-  { 0x0da8, 0x0e08 }, /*                Thai_chochan จ THAI CHARACTER CHO CHAN */
-  { 0x0da9, 0x0e09 }, /*               Thai_choching ฉ THAI CHARACTER CHO CHING */
-  { 0x0daa, 0x0e0a }, /*               Thai_chochang ช THAI CHARACTER CHO CHANG */
-  { 0x0dab, 0x0e0b }, /*                   Thai_soso ซ THAI CHARACTER SO SO */
-  { 0x0dac, 0x0e0c }, /*                Thai_chochoe ฌ THAI CHARACTER CHO CHOE */
-  { 0x0dad, 0x0e0d }, /*                 Thai_yoying ญ THAI CHARACTER YO YING */
-  { 0x0dae, 0x0e0e }, /*                Thai_dochada ฎ THAI CHARACTER DO CHADA */
-  { 0x0daf, 0x0e0f }, /*                Thai_topatak ฏ THAI CHARACTER TO PATAK */
-  { 0x0db0, 0x0e10 }, /*                Thai_thothan ฐ THAI CHARACTER THO THAN */
-  { 0x0db1, 0x0e11 }, /*          Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */
-  { 0x0db2, 0x0e12 }, /*             Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */
-  { 0x0db3, 0x0e13 }, /*                  Thai_nonen ณ THAI CHARACTER NO NEN */
-  { 0x0db4, 0x0e14 }, /*                  Thai_dodek ด THAI CHARACTER DO DEK */
-  { 0x0db5, 0x0e15 }, /*                  Thai_totao ต THAI CHARACTER TO TAO */
-  { 0x0db6, 0x0e16 }, /*               Thai_thothung ถ THAI CHARACTER THO THUNG */
-  { 0x0db7, 0x0e17 }, /*              Thai_thothahan ท THAI CHARACTER THO THAHAN */
-  { 0x0db8, 0x0e18 }, /*               Thai_thothong ธ THAI CHARACTER THO THONG */
-  { 0x0db9, 0x0e19 }, /*                   Thai_nonu น THAI CHARACTER NO NU */
-  { 0x0dba, 0x0e1a }, /*               Thai_bobaimai บ THAI CHARACTER BO BAIMAI */
-  { 0x0dbb, 0x0e1b }, /*                  Thai_popla ป THAI CHARACTER PO PLA */
-  { 0x0dbc, 0x0e1c }, /*               Thai_phophung ผ THAI CHARACTER PHO PHUNG */
-  { 0x0dbd, 0x0e1d }, /*                   Thai_fofa ฝ THAI CHARACTER FO FA */
-  { 0x0dbe, 0x0e1e }, /*                Thai_phophan พ THAI CHARACTER PHO PHAN */
-  { 0x0dbf, 0x0e1f }, /*                  Thai_fofan ฟ THAI CHARACTER FO FAN */
-  { 0x0dc0, 0x0e20 }, /*             Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */
-  { 0x0dc1, 0x0e21 }, /*                   Thai_moma ม THAI CHARACTER MO MA */
-  { 0x0dc2, 0x0e22 }, /*                  Thai_yoyak ย THAI CHARACTER YO YAK */
-  { 0x0dc3, 0x0e23 }, /*                  Thai_rorua ร THAI CHARACTER RO RUA */
-  { 0x0dc4, 0x0e24 }, /*                     Thai_ru ฤ THAI CHARACTER RU */
-  { 0x0dc5, 0x0e25 }, /*                 Thai_loling ล THAI CHARACTER LO LING */
-  { 0x0dc6, 0x0e26 }, /*                     Thai_lu ฦ THAI CHARACTER LU */
-  { 0x0dc7, 0x0e27 }, /*                 Thai_wowaen ว THAI CHARACTER WO WAEN */
-  { 0x0dc8, 0x0e28 }, /*                 Thai_sosala ศ THAI CHARACTER SO SALA */
-  { 0x0dc9, 0x0e29 }, /*                 Thai_sorusi ษ THAI CHARACTER SO RUSI */
-  { 0x0dca, 0x0e2a }, /*                  Thai_sosua ส THAI CHARACTER SO SUA */
-  { 0x0dcb, 0x0e2b }, /*                  Thai_hohip ห THAI CHARACTER HO HIP */
-  { 0x0dcc, 0x0e2c }, /*                Thai_lochula ฬ THAI CHARACTER LO CHULA */
-  { 0x0dcd, 0x0e2d }, /*                   Thai_oang อ THAI CHARACTER O ANG */
-  { 0x0dce, 0x0e2e }, /*               Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */
-  { 0x0dcf, 0x0e2f }, /*              Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */
-  { 0x0dd0, 0x0e30 }, /*                  Thai_saraa ะ THAI CHARACTER SARA A */
-  { 0x0dd1, 0x0e31 }, /*             Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */
-  { 0x0dd2, 0x0e32 }, /*                 Thai_saraaa า THAI CHARACTER SARA AA */
-  { 0x0dd3, 0x0e33 }, /*                 Thai_saraam ำ THAI CHARACTER SARA AM */
-  { 0x0dd4, 0x0e34 }, /*                  Thai_sarai ิ THAI CHARACTER SARA I */
-  { 0x0dd5, 0x0e35 }, /*                 Thai_saraii ี THAI CHARACTER SARA II */
-  { 0x0dd6, 0x0e36 }, /*                 Thai_saraue ึ THAI CHARACTER SARA UE */
-  { 0x0dd7, 0x0e37 }, /*                Thai_sarauee ื THAI CHARACTER SARA UEE */
-  { 0x0dd8, 0x0e38 }, /*                  Thai_sarau ุ THAI CHARACTER SARA U */
-  { 0x0dd9, 0x0e39 }, /*                 Thai_sarauu ู THAI CHARACTER SARA UU */
-  { 0x0dda, 0x0e3a }, /*                Thai_phinthu ฺ THAI CHARACTER PHINTHU */
-  { 0x0ddf, 0x0e3f }, /*                   Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */
-  { 0x0de0, 0x0e40 }, /*                  Thai_sarae เ THAI CHARACTER SARA E */
-  { 0x0de1, 0x0e41 }, /*                 Thai_saraae แ THAI CHARACTER SARA AE */
-  { 0x0de2, 0x0e42 }, /*                  Thai_sarao โ THAI CHARACTER SARA O */
-  { 0x0de3, 0x0e43 }, /*          Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */
-  { 0x0de4, 0x0e44 }, /*         Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */
-  { 0x0de5, 0x0e45 }, /*            Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */
-  { 0x0de6, 0x0e46 }, /*               Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */
-  { 0x0de7, 0x0e47 }, /*              Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */
-  { 0x0de8, 0x0e48 }, /*                  Thai_maiek ่ THAI CHARACTER MAI EK */
-  { 0x0de9, 0x0e49 }, /*                 Thai_maitho ้ THAI CHARACTER MAI THO */
-  { 0x0dea, 0x0e4a }, /*                 Thai_maitri ๊ THAI CHARACTER MAI TRI */
-  { 0x0deb, 0x0e4b }, /*            Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */
-  { 0x0dec, 0x0e4c }, /*            Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */
-  { 0x0ded, 0x0e4d }, /*               Thai_nikhahit ํ THAI CHARACTER NIKHAHIT */
-  { 0x0df0, 0x0e50 }, /*                 Thai_leksun ๐ THAI DIGIT ZERO */
-  { 0x0df1, 0x0e51 }, /*                Thai_leknung ๑ THAI DIGIT ONE */
-  { 0x0df2, 0x0e52 }, /*                Thai_leksong ๒ THAI DIGIT TWO */
-  { 0x0df3, 0x0e53 }, /*                 Thai_leksam ๓ THAI DIGIT THREE */
-  { 0x0df4, 0x0e54 }, /*                  Thai_leksi ๔ THAI DIGIT FOUR */
-  { 0x0df5, 0x0e55 }, /*                  Thai_lekha ๕ THAI DIGIT FIVE */
-  { 0x0df6, 0x0e56 }, /*                 Thai_lekhok ๖ THAI DIGIT SIX */
-  { 0x0df7, 0x0e57 }, /*                Thai_lekchet ๗ THAI DIGIT SEVEN */
-  { 0x0df8, 0x0e58 }, /*                Thai_lekpaet ๘ THAI DIGIT EIGHT */
-  { 0x0df9, 0x0e59 }, /*                 Thai_lekkao ๙ THAI DIGIT NINE */
-
-  { 0x0ed4, 0x11a8 }, /*             Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */
-  { 0x0ed5, 0x11a9 }, /*        Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */
-  { 0x0ed6, 0x11aa }, /*         Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */
-  { 0x0ed7, 0x11ab }, /*              Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */
-  { 0x0ed8, 0x11ac }, /*         Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */
-  { 0x0ed9, 0x11ad }, /*         Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */
-  { 0x0eda, 0x11ae }, /*             Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */
-  { 0x0edb, 0x11af }, /*              Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */
-  { 0x0edc, 0x11b0 }, /*        Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */
-  { 0x0edd, 0x11b1 }, /*         Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */
-  { 0x0ede, 0x11b2 }, /*         Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */
-  { 0x0edf, 0x11b3 }, /*          Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */
-  { 0x0ee0, 0x11b4 }, /*         Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */
-  { 0x0ee1, 0x11b5 }, /*        Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */
-  { 0x0ee2, 0x11b6 }, /*         Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */
-  { 0x0ee3, 0x11b7 }, /*              Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */
-  { 0x0ee4, 0x11b8 }, /*              Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */
-  { 0x0ee5, 0x11b9 }, /*          Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */
-  { 0x0ee6, 0x11ba }, /*               Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */
-  { 0x0ee7, 0x11bb }, /*          Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */
-  { 0x0ee8, 0x11bc }, /*              Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */
-  { 0x0ee9, 0x11bd }, /*              Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */
-  { 0x0eea, 0x11be }, /*              Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */
-  { 0x0eeb, 0x11bf }, /*             Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */
-  { 0x0eec, 0x11c0 }, /*              Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */
-  { 0x0eed, 0x11c1 }, /*             Hangul_J_Phieuf ᇁ HANGUL JONGSEONG PHIEUPH */
-  { 0x0eee, 0x11c2 }, /*              Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */
-  { 0x0ef8, 0x11eb }, /*            Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */
-  { 0x0ef9, 0x11f0 }, /*  Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */
-  { 0x0efa, 0x11f9 }, /*        Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
-
-  { 0x0aa2, 0x2002 }, /*                     enspace   EN SPACE */
-  { 0x0aa1, 0x2003 }, /*                     emspace   EM SPACE */
-  { 0x0aa3, 0x2004 }, /*                    em3space   THREE-PER-EM SPACE */
-  { 0x0aa4, 0x2005 }, /*                    em4space   FOUR-PER-EM SPACE */
-  { 0x0aa5, 0x2007 }, /*                  digitspace   FIGURE SPACE */
-  { 0x0aa6, 0x2008 }, /*                  punctspace   PUNCTUATION SPACE */
-  { 0x0aa7, 0x2009 }, /*                   thinspace   THIN SPACE */
-  { 0x0aa8, 0x200a }, /*                   hairspace   HAIR SPACE */
-  { 0x0abb, 0x2012 }, /*                     figdash ‒ FIGURE DASH */
-  { 0x0aaa, 0x2013 }, /*                      endash – EN DASH */
-  { 0x0aa9, 0x2014 }, /*                      emdash — EM DASH */
-  { 0x07af, 0x2015 }, /*              Greek_horizbar ― HORIZONTAL BAR */
-  { 0x0cdf, 0x2017 }, /*        hebrew_doublelowline ‗ DOUBLE LOW LINE */
-  { 0x0ad0, 0x2018 }, /*         leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */
-  { 0x0ad1, 0x2019 }, /*        rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */
-  { 0x0afd, 0x201a }, /*          singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */
-  { 0x0ad2, 0x201c }, /*         leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */
-  { 0x0ad3, 0x201d }, /*        rightdoublequotemark ” RIGHT DOUBLE QUOTATION MARK */
-  { 0x0afe, 0x201e }, /*          doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */
-  { 0x0af1, 0x2020 }, /*                      dagger † DAGGER */
-  { 0x0af2, 0x2021 }, /*                doubledagger ‡ DOUBLE DAGGER */
-  { 0x0ae6, 0x2022 }, /*          enfilledcircbullet • BULLET */
-  { 0x0aaf, 0x2025 }, /*             doubbaselinedot ‥ TWO DOT LEADER */
-  { 0x0aae, 0x2026 }, /*                    ellipsis … HORIZONTAL ELLIPSIS */
-  { 0x0ad6, 0x2032 }, /*                     minutes ′ PRIME */
-  { 0x0ad7, 0x2033 }, /*                     seconds ″ DOUBLE PRIME */
-  { 0x0afc, 0x2038 }, /*                       caret ‸ CARET */
-  { 0x047e, 0x203e }, /*                    overline ‾ OVERLINE */
-  { 0x0eff, 0x20a9 }, /*                  Korean_Won ₩ WON SIGN */
-  { 0x13a4, 0x20ac }, /*                        Euro € EURO SIGN */
-
-  { 0x0ab8, 0x2105 }, /*                      careof ℅ CARE OF */
-  { 0x06b0, 0x2116 }, /*                  numerosign № NUMERO SIGN */
-  { 0x0afb, 0x2117 }, /*         phonographcopyright ℗ SOUND RECORDING COPYRIGHT */
-  { 0x0ad4, 0x211e }, /*                prescription ℞ PRESCRIPTION TAKE */
-  { 0x0ac9, 0x2122 }, /*                   trademark ™ TRADE MARK SIGN */
-  { 0x0ab0, 0x2153 }, /*                    onethird ⅓ VULGAR FRACTION ONE THIRD */
-  { 0x0ab1, 0x2154 }, /*                   twothirds ⅔ VULGAR FRACTION TWO THIRDS */
-  { 0x0ab2, 0x2155 }, /*                    onefifth ⅕ VULGAR FRACTION ONE FIFTH */
-  { 0x0ab3, 0x2156 }, /*                   twofifths ⅖ VULGAR FRACTION TWO FIFTHS */
-  { 0x0ab4, 0x2157 }, /*                 threefifths ⅗ VULGAR FRACTION THREE FIFTHS */
-  { 0x0ab5, 0x2158 }, /*                  fourfifths ⅘ VULGAR FRACTION FOUR FIFTHS */
-  { 0x0ab6, 0x2159 }, /*                    onesixth ⅙ VULGAR FRACTION ONE SIXTH */
-  { 0x0ab7, 0x215a }, /*                  fivesixths ⅚ VULGAR FRACTION FIVE SIXTHS */
-  { 0x0ac3, 0x215b }, /*                   oneeighth ⅛ VULGAR FRACTION ONE EIGHTH */
-  { 0x0ac4, 0x215c }, /*                threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */
-  { 0x0ac5, 0x215d }, /*                 fiveeighths ⅝ VULGAR FRACTION FIVE EIGHTHS */
-  { 0x0ac6, 0x215e }, /*                seveneighths ⅞ VULGAR FRACTION SEVEN EIGHTHS */
-  { 0x08fb, 0x2190 }, /*                   leftarrow ← LEFTWARDS ARROW */
-  { 0x08fc, 0x2191 }, /*                     uparrow ↑ UPWARDS ARROW */
-  { 0x08fd, 0x2192 }, /*                  rightarrow → RIGHTWARDS ARROW */
-  { 0x08fe, 0x2193 }, /*                   downarrow ↓ DOWNWARDS ARROW */
-  { 0x08ce, 0x21d2 }, /*                     implies ⇒ RIGHTWARDS DOUBLE ARROW */
-  { 0x08cd, 0x21d4 }, /*                    ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */
-  { 0x08ef, 0x2202 }, /*           partialderivative ∂ PARTIAL DIFFERENTIAL */
-  { 0x08c5, 0x2207 }, /*                       nabla ∇ NABLA */
-  { 0x0bca, 0x2218 }, /*                         jot ∘ RING OPERATOR */
-  { 0x08d6, 0x221a }, /*                     radical √ SQUARE ROOT */
-  { 0x08c1, 0x221d }, /*                   variation ∝ PROPORTIONAL TO */
-  { 0x08c2, 0x221e }, /*                    infinity ∞ INFINITY */
-  { 0x08de, 0x2227 }, /*                  logicaland ∧ LOGICAL AND */
-  { 0x08df, 0x2228 }, /*                   logicalor ∨ LOGICAL OR */
-  { 0x08dc, 0x2229 }, /*                intersection ∩ INTERSECTION */
-  { 0x08dd, 0x222a }, /*                       union ∪ UNION */
-  { 0x08bf, 0x222b }, /*                    integral ∫ INTEGRAL */
-  { 0x08c0, 0x2234 }, /*                   therefore ∴ THEREFORE */
-  { 0x08c8, 0x223c }, /*                 approximate ∼ TILDE OPERATOR */
-  { 0x08c9, 0x2243 }, /*                similarequal ≃ ASYMPTOTICALLY EQUAL TO */
-  { 0x08bd, 0x2260 }, /*                    notequal ≠ NOT EQUAL TO */
-  { 0x08cf, 0x2261 }, /*                   identical ≡ IDENTICAL TO */
-  { 0x08bc, 0x2264 }, /*               lessthanequal ≤ LESS-THAN OR EQUAL TO */
-  { 0x08be, 0x2265 }, /*            greaterthanequal ≥ GREATER-THAN OR EQUAL TO */
-  { 0x08da, 0x2282 }, /*                  includedin ⊂ SUBSET OF */
-  { 0x08db, 0x2283 }, /*                    includes ⊃ SUPERSET OF */
-  { 0x0bdc, 0x22a2 }, /*                    lefttack ⊢ RIGHT TACK */
-  { 0x0bfc, 0x22a3 }, /*                   righttack ⊣ LEFT TACK */
-  { 0x0bce, 0x22a4 }, /*                      uptack ⊤ DOWN TACK */
-  { 0x0bc2, 0x22a5 }, /*                    downtack ⊥ UP TACK */
-  { 0x0bd3, 0x2308 }, /*                     upstile ⌈ LEFT CEILING */
-  { 0x0bc4, 0x230a }, /*                   downstile ⌊ LEFT FLOOR */
-  { 0x0afa, 0x2315 }, /*           telephonerecorder ⌕ TELEPHONE RECORDER */
-  { 0x08a4, 0x2320 }, /*                 topintegral ⌠ TOP HALF INTEGRAL */
-  { 0x08a5, 0x2321 }, /*                 botintegral ⌡ BOTTOM HALF INTEGRAL */
-  { 0x0abc, 0x2329 }, /*            leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */
-  { 0x0abe, 0x232a }, /*           rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */
-  { 0x0bcc, 0x2395 }, /*                        quad ⎕ APL FUNCTIONAL SYMBOL QUAD */
-  { 0x08ab, 0x239b }, /*               topleftparens ⎛ ??? */
-  { 0x08ac, 0x239d }, /*               botleftparens ⎝ ??? */
-  { 0x08ad, 0x239e }, /*              toprightparens ⎞ ??? */
-  { 0x08ae, 0x23a0 }, /*              botrightparens ⎠ ??? */
-  { 0x08a7, 0x23a1 }, /*            topleftsqbracket ⎡ ??? */
-  { 0x08a8, 0x23a3 }, /*            botleftsqbracket ⎣ ??? */
-  { 0x08a9, 0x23a4 }, /*           toprightsqbracket ⎤ ??? */
-  { 0x08aa, 0x23a6 }, /*           botrightsqbracket ⎦ ??? */
-  { 0x08af, 0x23a8 }, /*        leftmiddlecurlybrace ⎨ ??? */
-  { 0x08b0, 0x23ac }, /*       rightmiddlecurlybrace ⎬ ??? */
-  { 0x08a1, 0x23b7 }, /*                 leftradical ⎷ ??? */
-  { 0x09ef, 0x23ba }, /*              horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */
-  { 0x09f0, 0x23bb }, /*              horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */
-  { 0x09f2, 0x23bc }, /*              horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */
-  { 0x09f3, 0x23bd }, /*              horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */
-  { 0x09e2, 0x2409 }, /*                          ht ␉ SYMBOL FOR HORIZONTAL TABULATION */
-  { 0x09e3, 0x240c }, /*                          ff ␌ SYMBOL FOR FORM FEED */
-  { 0x09e4, 0x240d }, /*                          cr ␍ SYMBOL FOR CARRIAGE RETURN */
-  { 0x09e5, 0x240a }, /*                          lf ␊ SYMBOL FOR LINE FEED */
-  { 0x09e8, 0x2424 }, /*                          nl ␤ SYMBOL FOR NEWLINE */
-  { 0x09e9, 0x240b }, /*                          vt ␋ SYMBOL FOR VERTICAL TABULATION */
-
-  { 0x08a3, 0x2500 }, /*              horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */
-  { 0x08a6, 0x2502 }, /*               vertconnector │ BOX DRAWINGS LIGHT VERTICAL */
-  { 0x08a2, 0x250c }, /*              topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
-  { 0x09ec, 0x250c }, /*                upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
-  { 0x09eb, 0x2510 }, /*               uprightcorner ┐ BOX DRAWINGS LIGHT DOWN AND LEFT */
-  { 0x09ed, 0x2514 }, /*               lowleftcorner └ BOX DRAWINGS LIGHT UP AND RIGHT */
-  { 0x09ea, 0x2518 }, /*              lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */
-  { 0x09f4, 0x251c }, /*                       leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
-  { 0x09f5, 0x2524 }, /*                      rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
-  { 0x09f7, 0x252c }, /*                        topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
-  { 0x09ee, 0x253c }, /*               crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
-  { 0x09f6, 0x2534 }, /*                        bott ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
-  { 0x09e1, 0x2592 }, /*                checkerboard ▒ MEDIUM SHADE */
-  { 0x0ae7, 0x25aa }, /*            enfilledsqbullet ▪ BLACK SMALL SQUARE */
-  { 0x0ae1, 0x25ab }, /*          enopensquarebullet ▫ WHITE SMALL SQUARE */
-  { 0x0adb, 0x25ac }, /*            filledrectbullet ▬ BLACK RECTANGLE */
-  { 0x0ae2, 0x25ad }, /*              openrectbullet ▭ WHITE RECTANGLE */
-  { 0x0adf, 0x25ae }, /*                emfilledrect ▮ BLACK VERTICAL RECTANGLE */
-  { 0x0acf, 0x25af }, /*             emopenrectangle ▯ WHITE VERTICAL RECTANGLE */
-  { 0x0ae8, 0x25b2 }, /*           filledtribulletup ▲ BLACK UP-POINTING TRIANGLE */
-  { 0x0ae3, 0x25b3 }, /*             opentribulletup △ WHITE UP-POINTING TRIANGLE */
-  { 0x0add, 0x25b6 }, /*        filledrighttribullet ▶ BLACK RIGHT-POINTING TRIANGLE */
-  { 0x0acd, 0x25b7 }, /*           rightopentriangle ▷ WHITE RIGHT-POINTING TRIANGLE */
-  { 0x0ae9, 0x25bc }, /*         filledtribulletdown ▼ BLACK DOWN-POINTING TRIANGLE */
-  { 0x0ae4, 0x25bd }, /*           opentribulletdown ▽ WHITE DOWN-POINTING TRIANGLE */
-  { 0x0adc, 0x25c0 }, /*         filledlefttribullet ◀ BLACK LEFT-POINTING TRIANGLE */
-  { 0x0acc, 0x25c1 }, /*            leftopentriangle ◁ WHITE LEFT-POINTING TRIANGLE */
-  { 0x09e0, 0x25c6 }, /*                soliddiamond ◆ BLACK DIAMOND */
-  { 0x0ace, 0x25cb }, /*                emopencircle ○ WHITE CIRCLE */
-  { 0x0ade, 0x25cf }, /*              emfilledcircle ● BLACK CIRCLE */
-  { 0x0ae0, 0x25e6 }, /*            enopencircbullet ◦ WHITE BULLET */
-  { 0x0aee, 0x2665 }, /*                       heart ♥ BLACK HEART SUIT */
-  { 0x0aed, 0x2666 }, /*                     diamond ♦ BLACK DIAMOND SUIT */
-  { 0x0af5, 0x266f }, /*                musicalsharp ♯ MUSIC SHARP SIGN */
-  { 0x0af6, 0x266d }, /*                 musicalflat ♭ MUSIC FLAT SIGN */
-  { 0x0af3, 0x2713 }, /*                   checkmark ✓ CHECK MARK */
-  { 0x0af4, 0x2717 }, /*                 ballotcross ✗ BALLOT X */
-  { 0x0ad9, 0x271d }, /*                  latincross ✝ LATIN CROSS */
-  { 0x0af0, 0x2720 }, /*                maltesecross ✠ MALTESE CROSS */
-
-  { 0x04a4, 0x3001 }, /*                  kana_comma 、 IDEOGRAPHIC COMMA */
-  { 0x04a1, 0x3002 }, /*               kana_fullstop 。 IDEOGRAPHIC FULL STOP */
-  { 0x04a2, 0x300c }, /*         kana_openingbracket 「 LEFT CORNER BRACKET */
-  { 0x04a3, 0x300d }, /*         kana_closingbracket 」 RIGHT CORNER BRACKET */
-  { 0x04de, 0x309b }, /*                 voicedsound ゛ KATAKANA-HIRAGANA VOICED SOUND MARK */
-  { 0x04df, 0x309c }, /*             semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
-  { 0x04a7, 0x30a1 }, /*                      kana_a ァ KATAKANA LETTER SMALL A */
-  { 0x04b1, 0x30a2 }, /*                      kana_A ア KATAKANA LETTER A */
-  { 0x04a8, 0x30a3 }, /*                      kana_i ィ KATAKANA LETTER SMALL I */
-  { 0x04b2, 0x30a4 }, /*                      kana_I イ KATAKANA LETTER I */
-  { 0x04a9, 0x30a5 }, /*                      kana_u ゥ KATAKANA LETTER SMALL U */
-  { 0x04b3, 0x30a6 }, /*                      kana_U ウ KATAKANA LETTER U */
-  { 0x04aa, 0x30a7 }, /*                      kana_e ェ KATAKANA LETTER SMALL E */
-  { 0x04b4, 0x30a8 }, /*                      kana_E エ KATAKANA LETTER E */
-  { 0x04ab, 0x30a9 }, /*                      kana_o ォ KATAKANA LETTER SMALL O */
-  { 0x04b5, 0x30aa }, /*                      kana_O オ KATAKANA LETTER O */
-  { 0x04b6, 0x30ab }, /*                     kana_KA カ KATAKANA LETTER KA */
-  { 0x04b7, 0x30ad }, /*                     kana_KI キ KATAKANA LETTER KI */
-  { 0x04b8, 0x30af }, /*                     kana_KU ク KATAKANA LETTER KU */
-  { 0x04b9, 0x30b1 }, /*                     kana_KE ケ KATAKANA LETTER KE */
-  { 0x04ba, 0x30b3 }, /*                     kana_KO コ KATAKANA LETTER KO */
-  { 0x04bb, 0x30b5 }, /*                     kana_SA サ KATAKANA LETTER SA */
-  { 0x04bc, 0x30b7 }, /*                    kana_SHI シ KATAKANA LETTER SI */
-  { 0x04bd, 0x30b9 }, /*                     kana_SU ス KATAKANA LETTER SU */
-  { 0x04be, 0x30bb }, /*                     kana_SE セ KATAKANA LETTER SE */
-  { 0x04bf, 0x30bd }, /*                     kana_SO ソ KATAKANA LETTER SO */
-  { 0x04c0, 0x30bf }, /*                     kana_TA タ KATAKANA LETTER TA */
-  { 0x04c1, 0x30c1 }, /*                    kana_CHI チ KATAKANA LETTER TI */
-  { 0x04af, 0x30c3 }, /*                    kana_tsu ッ KATAKANA LETTER SMALL TU */
-  { 0x04c2, 0x30c4 }, /*                    kana_TSU ツ KATAKANA LETTER TU */
-  { 0x04c3, 0x30c6 }, /*                     kana_TE テ KATAKANA LETTER TE */
-  { 0x04c4, 0x30c8 }, /*                     kana_TO ト KATAKANA LETTER TO */
-  { 0x04c5, 0x30ca }, /*                     kana_NA ナ KATAKANA LETTER NA */
-  { 0x04c6, 0x30cb }, /*                     kana_NI ニ KATAKANA LETTER NI */
-  { 0x04c7, 0x30cc }, /*                     kana_NU ヌ KATAKANA LETTER NU */
-  { 0x04c8, 0x30cd }, /*                     kana_NE ネ KATAKANA LETTER NE */
-  { 0x04c9, 0x30ce }, /*                     kana_NO ノ KATAKANA LETTER NO */
-  { 0x04ca, 0x30cf }, /*                     kana_HA ハ KATAKANA LETTER HA */
-  { 0x04cb, 0x30d2 }, /*                     kana_HI ヒ KATAKANA LETTER HI */
-  { 0x04cc, 0x30d5 }, /*                     kana_FU フ KATAKANA LETTER HU */
-  { 0x04cd, 0x30d8 }, /*                     kana_HE ヘ KATAKANA LETTER HE */
-  { 0x04ce, 0x30db }, /*                     kana_HO ホ KATAKANA LETTER HO */
-  { 0x04cf, 0x30de }, /*                     kana_MA マ KATAKANA LETTER MA */
-  { 0x04d0, 0x30df }, /*                     kana_MI ミ KATAKANA LETTER MI */
-  { 0x04d1, 0x30e0 }, /*                     kana_MU ム KATAKANA LETTER MU */
-  { 0x04d2, 0x30e1 }, /*                     kana_ME メ KATAKANA LETTER ME */
-  { 0x04d3, 0x30e2 }, /*                     kana_MO モ KATAKANA LETTER MO */
-  { 0x04ac, 0x30e3 }, /*                     kana_ya ャ KATAKANA LETTER SMALL YA */
-  { 0x04d4, 0x30e4 }, /*                     kana_YA ヤ KATAKANA LETTER YA */
-  { 0x04ad, 0x30e5 }, /*                     kana_yu ュ KATAKANA LETTER SMALL YU */
-  { 0x04d5, 0x30e6 }, /*                     kana_YU ユ KATAKANA LETTER YU */
-  { 0x04ae, 0x30e7 }, /*                     kana_yo ョ KATAKANA LETTER SMALL YO */
-  { 0x04d6, 0x30e8 }, /*                     kana_YO ヨ KATAKANA LETTER YO */
-  { 0x04d7, 0x30e9 }, /*                     kana_RA ラ KATAKANA LETTER RA */
-  { 0x04d8, 0x30ea }, /*                     kana_RI リ KATAKANA LETTER RI */
-  { 0x04d9, 0x30eb }, /*                     kana_RU ル KATAKANA LETTER RU */
-  { 0x04da, 0x30ec }, /*                     kana_RE レ KATAKANA LETTER RE */
-  { 0x04db, 0x30ed }, /*                     kana_RO ロ KATAKANA LETTER RO */
-  { 0x04dc, 0x30ef }, /*                     kana_WA ワ KATAKANA LETTER WA */
-  { 0x04a6, 0x30f2 }, /*                     kana_WO ヲ KATAKANA LETTER WO */
-  { 0x04dd, 0x30f3 }, /*                      kana_N ン KATAKANA LETTER N */
-  { 0x04a5, 0x30fb }, /*            kana_conjunctive ・ KATAKANA MIDDLE DOT */
-  { 0x04b0, 0x30fc }, /*              prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */
-
-  { 0x0ea1, 0x3131 }, /*               Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */
-  { 0x0ea2, 0x3132 }, /*          Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */
-  { 0x0ea3, 0x3133 }, /*           Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */
-  { 0x0ea4, 0x3134 }, /*                Hangul_Nieun ㄴ HANGUL LETTER NIEUN */
-  { 0x0ea5, 0x3135 }, /*           Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */
-  { 0x0ea6, 0x3136 }, /*           Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */
-  { 0x0ea7, 0x3137 }, /*               Hangul_Dikeud ㄷ HANGUL LETTER TIKEUT */
-  { 0x0ea8, 0x3138 }, /*          Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */
-  { 0x0ea9, 0x3139 }, /*                Hangul_Rieul ㄹ HANGUL LETTER RIEUL */
-  { 0x0eaa, 0x313a }, /*          Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */
-  { 0x0eab, 0x313b }, /*           Hangul_RieulMieum ㄻ HANGUL LETTER RIEUL-MIEUM */
-  { 0x0eac, 0x313c }, /*           Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */
-  { 0x0ead, 0x313d }, /*            Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */
-  { 0x0eae, 0x313e }, /*           Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */
-  { 0x0eaf, 0x313f }, /*          Hangul_RieulPhieuf ㄿ HANGUL LETTER RIEUL-PHIEUPH */
-  { 0x0eb0, 0x3140 }, /*           Hangul_RieulHieuh ㅀ HANGUL LETTER RIEUL-HIEUH */
-  { 0x0eb1, 0x3141 }, /*                Hangul_Mieum ㅁ HANGUL LETTER MIEUM */
-  { 0x0eb2, 0x3142 }, /*                Hangul_Pieub ㅂ HANGUL LETTER PIEUP */
-  { 0x0eb3, 0x3143 }, /*           Hangul_SsangPieub ㅃ HANGUL LETTER SSANGPIEUP */
-  { 0x0eb4, 0x3144 }, /*            Hangul_PieubSios ㅄ HANGUL LETTER PIEUP-SIOS */
-  { 0x0eb5, 0x3145 }, /*                 Hangul_Sios ㅅ HANGUL LETTER SIOS */
-  { 0x0eb6, 0x3146 }, /*            Hangul_SsangSios ㅆ HANGUL LETTER SSANGSIOS */
-  { 0x0eb7, 0x3147 }, /*                Hangul_Ieung ㅇ HANGUL LETTER IEUNG */
-  { 0x0eb8, 0x3148 }, /*                Hangul_Jieuj ㅈ HANGUL LETTER CIEUC */
-  { 0x0eb9, 0x3149 }, /*           Hangul_SsangJieuj ㅉ HANGUL LETTER SSANGCIEUC */
-  { 0x0eba, 0x314a }, /*                Hangul_Cieuc ㅊ HANGUL LETTER CHIEUCH */
-  { 0x0ebb, 0x314b }, /*               Hangul_Khieuq ㅋ HANGUL LETTER KHIEUKH */
-  { 0x0ebc, 0x314c }, /*                Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */
-  { 0x0ebd, 0x314d }, /*               Hangul_Phieuf ㅍ HANGUL LETTER PHIEUPH */
-  { 0x0ebe, 0x314e }, /*                Hangul_Hieuh ㅎ HANGUL LETTER HIEUH */
-  { 0x0ebf, 0x314f }, /*                    Hangul_A ㅏ HANGUL LETTER A */
-  { 0x0ec0, 0x3150 }, /*                   Hangul_AE ㅐ HANGUL LETTER AE */
-  { 0x0ec1, 0x3151 }, /*                   Hangul_YA ㅑ HANGUL LETTER YA */
-  { 0x0ec2, 0x3152 }, /*                  Hangul_YAE ㅒ HANGUL LETTER YAE */
-  { 0x0ec3, 0x3153 }, /*                   Hangul_EO ㅓ HANGUL LETTER EO */
-  { 0x0ec4, 0x3154 }, /*                    Hangul_E ㅔ HANGUL LETTER E */
-  { 0x0ec5, 0x3155 }, /*                  Hangul_YEO ㅕ HANGUL LETTER YEO */
-  { 0x0ec6, 0x3156 }, /*                   Hangul_YE ㅖ HANGUL LETTER YE */
-  { 0x0ec7, 0x3157 }, /*                    Hangul_O ㅗ HANGUL LETTER O */
-  { 0x0ec8, 0x3158 }, /*                   Hangul_WA ㅘ HANGUL LETTER WA */
-  { 0x0ec9, 0x3159 }, /*                  Hangul_WAE ㅙ HANGUL LETTER WAE */
-  { 0x0eca, 0x315a }, /*                   Hangul_OE ㅚ HANGUL LETTER OE */
-  { 0x0ecb, 0x315b }, /*                   Hangul_YO ㅛ HANGUL LETTER YO */
-  { 0x0ecc, 0x315c }, /*                    Hangul_U ㅜ HANGUL LETTER U */
-  { 0x0ecd, 0x315d }, /*                  Hangul_WEO ㅝ HANGUL LETTER WEO */
-  { 0x0ece, 0x315e }, /*                   Hangul_WE ㅞ HANGUL LETTER WE */
-  { 0x0ecf, 0x315f }, /*                   Hangul_WI ㅟ HANGUL LETTER WI */
-  { 0x0ed0, 0x3160 }, /*                   Hangul_YU ㅠ HANGUL LETTER YU */
-  { 0x0ed1, 0x3161 }, /*                   Hangul_EU ㅡ HANGUL LETTER EU */
-  { 0x0ed2, 0x3162 }, /*                   Hangul_YI ㅢ HANGUL LETTER YI */
-  { 0x0ed3, 0x3163 }, /*                    Hangul_I ㅣ HANGUL LETTER I */
-  { 0x0eef, 0x316d }, /*     Hangul_RieulYeorinHieuh ㅭ HANGUL LETTER RIEUL-YEORINHIEUH */
-  { 0x0ef0, 0x3171 }, /*    Hangul_SunkyeongeumMieum ㅱ HANGUL LETTER KAPYEOUNMIEUM */
-  { 0x0ef1, 0x3178 }, /*    Hangul_SunkyeongeumPieub ㅸ HANGUL LETTER KAPYEOUNPIEUP */
-  { 0x0ef2, 0x317f }, /*              Hangul_PanSios ㅿ HANGUL LETTER PANSIOS */
-  { 0x0ef3, 0x3181 }, /*    Hangul_KkogjiDalrinIeung ㆁ HANGUL LETTER YESIEUNG */
-  { 0x0ef4, 0x3184 }, /*   Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */
-  { 0x0ef5, 0x3186 }, /*          Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */
-  { 0x0ef6, 0x318d }, /*                Hangul_AraeA ㆍ HANGUL LETTER ARAEA */
-  { 0x0ef7, 0x318e }, /*               Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */
- };
-
-KeySym ucs2keysym (long ucs)
-{
-    int min = 0;
-    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
-    int mid;
-    
-    /* first check for Latin-1 characters (1:1 mapping) */
-    if ((ucs >= 0x0020 && ucs <= 0x007e) ||
-        (ucs >= 0x00a0 && ucs <= 0x00ff))
-        return ucs;
-
-    /* binary search in table */
-    while (max >= min) {
-       mid = (min + max) / 2;
-       if (keysymtab[mid].ucs < ucs)
-           min = mid + 1;
-       else if (keysymtab[mid].ucs > ucs)
-           max = mid - 1;
-       else {
-           /* found it */
-           return keysymtab[mid].keysym;
-       }
-    }
-
-    /* no matching keysym value found, return UCS2 with bit set */
-    return ucs | 0x01000000;
-}
-
-long keysym2ucs(KeySym keysym)
-{
-    int min = 0;
-    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
-    int mid;
-
-    /* first check for Latin-1 characters (1:1 mapping) */
-    if ((keysym >= 0x0020 && keysym <= 0x007e) ||
-        (keysym >= 0x00a0 && keysym <= 0x00ff))
-        return (long) keysym;
-
-    /* also check for directly encoded 24-bit UCS characters */
-    if ((keysym & 0xff000000) == 0x01000000)
-       return keysym & 0x00ffffff;
-
-    /* binary search in table */
-    while (max >= min) {
-       mid = (min + max) / 2;
-       if (keysymtab[mid].keysym < keysym)
-           min = mid + 1;
-       else if (keysymtab[mid].keysym > keysym)
-           max = mid - 1;
-       else {
-           /* found it */
-           return keysymtab[mid].ucs;
-       }
-    }
-
-    /* no matching Unicode value found */
-    return -1;
-}
index ebdba44..316cbe4 100644 (file)
@@ -11,8 +11,9 @@ INCLUDES = -I$(top_srcdir)           \
           $(GLIB_CFLAGS)            \
           $(GTK_CFLAGS)             \
           $(ATK_CFLAGS)             \
           $(GLIB_CFLAGS)            \
           $(GTK_CFLAGS)             \
           $(ATK_CFLAGS)             \
+           $(DBIND_CFLAGS)           \
           $(DEBUG_CFLAGS)
 
           $(DEBUG_CFLAGS)
 
-LDADD = $(top_builddir)/spi-common/libspicommon.la                     \
+LDADD = $(top_builddir)/common/libspicommon.la                         \
        $(top_builddir)/cspi/libcspi.la                                 \
        $(top_builddir)/cspi/libcspi.la                                 \
-       $(TESTS_LIBS) $(X_LIBS) $(XINPUT_LIBS) $(ATK_LIBS) $(GTK_LIBS)
+       $(TESTS_LIBS) $(X_LIBS) $(XINPUT_LIBS) $(ATK_LIBS) $(GTK_LIBS) $(DBIND_LIBS)
index 2f275d4..73aa240 100644 (file)
@@ -28,7 +28,7 @@
 #include <gtk/gtk.h>
 #include <atk/atk.h>
 #include <atk/atknoopobject.h>
 #include <gtk/gtk.h>
 #include <atk/atk.h>
 #include <atk/atknoopobject.h>
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
 
 typedef struct {
        long int val;
 
 typedef struct {
        long int val;
diff --git a/tools/Makefile.am b/tools/Makefile.am
deleted file mode 100644 (file)
index 63fc983..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-EXTRA_DIST = \
-       c-constants-generator.xsl\
-       spec-to-introspect.xsl\
-       doc-generator.xsl\
-       identity.xsl
diff --git a/tools/c-constants-generator.xsl b/tools/c-constants-generator.xsl
deleted file mode 100644 (file)
index bbcd8cf..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-<!-- Stylesheet to extract C enumerations from the AT-SPI spec.
-
-Copyright (C) 2006, 2007 Collabora Limited
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
-  xmlns:str="http://exslt.org/strings"
-  exclude-result-prefixes="str tp">
-
-  <xsl:output method="text" indent="no" encoding="ascii"/>
-
-  <xsl:param name="mixed-case-prefix" select="''"/>
-
-  <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
-  <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
-
-  <xsl:variable name="lower-case-prefix" select="translate($mixed-case-prefix, $upper, $lower)"/>
-
-
-  <xsl:template match="tp:flags">
-    <xsl:variable name="name">
-      <xsl:choose>
-        <xsl:when test="@plural">
-          <xsl:value-of select="@plural"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@name"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="value-prefix">
-      <xsl:choose>
-        <xsl:when test="@singular">
-          <xsl:value-of select="@singular"/>
-        </xsl:when>
-        <xsl:when test="@value-prefix">
-          <xsl:value-of select="@value-prefix"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@name"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:text>/**&#10;</xsl:text>
-    <xsl:text> *&#10;</xsl:text>
-    <xsl:value-of select="concat($mixed-case-prefix, $name)"/>
-    <xsl:text>:&#10;</xsl:text>
-    <xsl:apply-templates mode="flag-or-enumvalue-gtkdoc">
-      <xsl:with-param name="value-prefix" select="$value-prefix"/>
-    </xsl:apply-templates>
-    <xsl:text> *&#10;</xsl:text>
-    <xsl:if test="tp:docstring">
-      <xsl:text> * &lt;![CDATA[</xsl:text>
-      <xsl:value-of select="translate(string (tp:docstring), '&#13;&#10;', '  ')"/>
-      <xsl:text>]]&gt;&#10;</xsl:text>
-      <xsl:text> *&#10;</xsl:text>
-    </xsl:if>
-    <xsl:text> * Bitfield/set of flags generated from the AT-SPI specification.&#10;</xsl:text>
-    <xsl:text> */&#10;</xsl:text>
-    <xsl:text>typedef enum {&#10;</xsl:text>
-    <xsl:apply-templates>
-      <xsl:with-param name="value-prefix" select="$value-prefix"/>
-    </xsl:apply-templates>
-    <xsl:text>} </xsl:text>
-    <xsl:value-of select="concat($mixed-case-prefix, $name)"/>
-    <xsl:text>;&#10;</xsl:text>
-    <xsl:text>&#10;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="text()" mode="flag-or-enumvalue-gtkdoc"/>
-
-  <xsl:template match="tp:enumvalue" mode="flag-or-enumvalue-gtkdoc">
-    <xsl:param name="value-prefix"/>
-    <xsl:variable name="suffix">
-      <xsl:choose>
-        <xsl:when test="ancestor::interface">
-          <xsl:value-of select="concat(str:replace(ancestor::interface/@name, 'org.freedesktop.atspi.', ''), '_', @suffix)"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@suffix"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:text> * @</xsl:text>
-    <xsl:value-of select="concat($mixed-case-prefix, $suffix)"/>
-    <xsl:text>: &lt;![CDATA[</xsl:text>
-    <xsl:value-of select="translate(string(tp:docstring), '&#13;&#10;', '  ')"/>
-    <xsl:text>]]&gt;&#10;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="tp:flag" mode="flag-or-enumvalue-gtkdoc">
-    <xsl:param name="value-prefix"/>
-    <xsl:text> * @</xsl:text>
-    <xsl:value-of select="translate(concat($mixed-case-prefix, $value-prefix, '_', @suffix), $lower, $upper)"/>
-    <xsl:text>: &lt;![CDATA[</xsl:text>
-    <xsl:value-of select="translate(string(tp:docstring), '&#13;&#10;', '  ')"/>
-    <xsl:text>]]&gt;&#10;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="tp:enum">
-    <xsl:variable name="name">
-      <xsl:choose>
-        <xsl:when test="ancestor::interface">
-          <xsl:value-of select="concat(str:replace(ancestor::interface/@name, 'org.freedesktop.atspi.', ''), '_', @name)"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@name"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="value-prefix">
-      <xsl:choose>
-        <xsl:when test="@singular">
-          <xsl:value-of select="@singular"/>
-        </xsl:when>
-        <xsl:when test="@value-prefix">
-          <xsl:value-of select="@value-prefix"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@name"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="name-plural">
-      <xsl:choose>
-        <xsl:when test="@plural">
-          <xsl:value-of select="@plural"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@name"/><xsl:text>s</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:text>/**&#10;</xsl:text>
-    <xsl:text> *&#10;</xsl:text>
-    <xsl:value-of select="concat($mixed-case-prefix, $name)"/>
-    <xsl:text>:&#10;</xsl:text>
-    <xsl:apply-templates mode="flag-or-enumvalue-gtkdoc">
-      <xsl:with-param name="value-prefix" select="$value-prefix"/>
-    </xsl:apply-templates>
-    <xsl:text> *&#10;</xsl:text>
-    <xsl:if test="tp:docstring">
-      <xsl:text> * &lt;![CDATA[</xsl:text>
-      <xsl:value-of select="translate(string (tp:docstring), '&#13;&#10;', '  ')"/>
-      <xsl:text>]]&gt;&#10;</xsl:text>
-      <xsl:text> *&#10;</xsl:text>
-    </xsl:if>
-    <xsl:text> * Bitfield/set of flags generated from the AT-SPI specification.&#10;</xsl:text>
-    <xsl:text> */&#10;</xsl:text>
-    <xsl:text>typedef enum {&#10;</xsl:text>
-    <xsl:apply-templates>
-      <xsl:with-param name="value-prefix" select="$value-prefix"/>
-    </xsl:apply-templates>
-    <xsl:text>} </xsl:text>
-    <xsl:value-of select="concat($mixed-case-prefix, $name)"/>
-    <xsl:text>;&#10;</xsl:text>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:text>/**&#10;</xsl:text>
-    <xsl:text> * NUM_</xsl:text>
-    <xsl:value-of select="translate(concat($mixed-case-prefix, $name-plural), $lower, $upper)"/>
-    <xsl:text>:&#10;</xsl:text>
-    <xsl:text> *&#10;</xsl:text>
-    <xsl:text> * 1 higher than the highest valid value of #</xsl:text>
-    <xsl:value-of select="concat($mixed-case-prefix, $name)"/>
-    <xsl:text>.&#10;</xsl:text>
-    <xsl:text> */&#10;</xsl:text>
-    <xsl:text>#define NUM_</xsl:text>
-    <xsl:value-of select="translate(concat($mixed-case-prefix, $name-plural), $lower, $upper)"/>
-    <xsl:text> (</xsl:text>
-    <xsl:value-of select="tp:enumvalue[position() = last()]/@value"/>
-    <xsl:text>+1)&#10;</xsl:text>
-    <xsl:text>&#10;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="tp:flags/tp:flag">
-    <xsl:param name="value-prefix"/>
-    <xsl:variable name="suffix">
-      <xsl:choose>
-        <xsl:when test="@suffix">
-          <xsl:value-of select="@suffix"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@name"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="name" select="translate(concat($mixed-case-prefix, $value-prefix, '_', $suffix), $lower, $upper)"/>
-
-    <xsl:if test="@name and @suffix and @name != @suffix">
-      <xsl:message terminate="yes">
-        <xsl:text>Flag name </xsl:text>
-        <xsl:value-of select="@name"/>
-        <xsl:text> != suffix </xsl:text>
-        <xsl:value-of select="@suffix"/>
-        <xsl:text>&#10;</xsl:text>
-      </xsl:message>
-    </xsl:if>
-    <xsl:text>    </xsl:text>
-    <xsl:value-of select="$name"/>
-    <xsl:text> = </xsl:text>
-    <xsl:value-of select="@value"/>
-    <xsl:text>,&#10;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="tp:enum/tp:enumvalue">
-    <xsl:param name="value-prefix"/>
-    <xsl:variable name="suffix">
-      <xsl:choose>
-        <xsl:when test="ancestor::interface">
-          <xsl:value-of select="concat(str:replace(ancestor::interface/@name, 'org.freedesktop.atspi.', ''), '_', @suffix)"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="@suffix"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="name" select="concat($mixed-case-prefix, $suffix)"/>
-
-    <xsl:if test="@name and @suffix and @name != @suffix">
-      <xsl:message terminate="yes">
-        <xsl:text>Enumvalue name </xsl:text>
-        <xsl:value-of select="@name"/>
-        <xsl:text> != suffix </xsl:text>
-        <xsl:value-of select="@suffix"/>
-        <xsl:text>&#10;</xsl:text>
-      </xsl:message>
-    </xsl:if>
-
-    <xsl:if test="preceding-sibling::tp:enumvalue and number(preceding-sibling::tp:enumvalue[1]/@value) > number(@value)">
-      <xsl:message terminate="yes">
-        <xsl:text>Enum values must be in ascending numeric order, but </xsl:text>
-        <xsl:value-of select="$name"/>
-        <xsl:text> is less than the previous value</xsl:text>
-      </xsl:message>
-    </xsl:if>
-
-    <xsl:text>    </xsl:text>
-    <xsl:value-of select="$name"/>
-    <xsl:text>,&#10;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="tp:flag">
-    <xsl:message terminate="yes">tp:flag found outside tp:flags&#10;</xsl:message>
-  </xsl:template>
-
-  <xsl:template match="tp:enumvalue">
-    <xsl:message terminate="yes">tp:enumvalue found outside tp:enum&#10;</xsl:message>
-  </xsl:template>
-
-  <xsl:template match="text()"/>
-
-  <xsl:template match="/tp:spec">
-    <xsl:if test="$mixed-case-prefix = ''">
-      <xsl:message terminate="yes">
-        <xsl:text>mixed-case-prefix param must be set&#10;</xsl:text>
-      </xsl:message>
-    </xsl:if>
-
-    <xsl:text>/* Generated from </xsl:text>
-    <xsl:value-of select="tp:title"/>
-    <xsl:if test="tp:version">
-      <xsl:text>, version </xsl:text>
-      <xsl:value-of select="tp:version"/>
-    </xsl:if>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:for-each select="tp:copyright">
-      <xsl:value-of select="."/>
-      <xsl:text>&#10;</xsl:text>
-    </xsl:for-each>
-    <xsl:value-of select="tp:license"/>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:value-of select="tp:docstring"/>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:text> */&#10;</xsl:text>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:text>#ifndef _ACCESSIBILITY_H_&#10;</xsl:text>
-    <xsl:text>#define _ACCESSIBILITY_H_&#10;</xsl:text>
-    <xsl:text>#ifdef __cplusplus&#10;</xsl:text>
-    <xsl:text>extern "C" {&#10;</xsl:text>
-    <xsl:text>#endif&#10;</xsl:text>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:apply-templates/>
-    <xsl:text>&#10;</xsl:text>
-    <xsl:text>#ifdef __cplusplus&#10;</xsl:text>
-    <xsl:text>}&#10;</xsl:text>
-    <xsl:text>#endif&#10;</xsl:text>
-    <xsl:text>#endif&#10;</xsl:text>
-  </xsl:template>
-
-</xsl:stylesheet>
-
-<!-- vim:set sw=2 sts=2 et noai noci: -->
diff --git a/tools/doc-generator.xsl b/tools/doc-generator.xsl
deleted file mode 100644 (file)
index 98cfd8b..0000000
+++ /dev/null
@@ -1,689 +0,0 @@
-<!-- Generate HTML documentation from the Telepathy specification.
-The master copy of this stylesheet is in the Telepathy spec repository -
-please make any changes there.
-
-Copyright (C) 2006, 2007 Collabora Limited
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
--->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
-  exclude-result-prefixes="tp">
-  <!--Don't move the declaration of the HTML namespace up here - XMLNSs
-  don't work ideally in the presence of two things that want to use the
-  absence of a prefix, sadly. -->
-
-  <xsl:template match="*" mode="identity">
-    <xsl:copy>
-      <xsl:apply-templates mode="identity"/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="tp:docstring">
-    <xsl:apply-templates select="node()" mode="identity"/>
-  </xsl:template>
-
-  <xsl:template match="tp:errors">
-    <h1 xmlns="http://www.w3.org/1999/xhtml">Errors</h1>
-    <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="tp:generic-types">
-    <h1 xmlns="http://www.w3.org/1999/xhtml">Generic types</h1>
-    <xsl:call-template name="do-types"/>
-  </xsl:template>
-
-  <xsl:template name="do-types">
-    <xsl:if test="tp:simple-type">
-      <h2 xmlns="http://www.w3.org/1999/xhtml">Simple types</h2>
-      <xsl:apply-templates select="tp:simple-type"/>
-    </xsl:if>
-
-    <xsl:if test="tp:enum">
-      <h2 xmlns="http://www.w3.org/1999/xhtml">Enumerated types:</h2>
-      <xsl:apply-templates select="tp:enum"/>
-    </xsl:if>
-
-    <xsl:if test="tp:flags">
-      <h2 xmlns="http://www.w3.org/1999/xhtml">Sets of flags:</h2>
-      <xsl:apply-templates select="tp:flags"/>
-    </xsl:if>
-
-    <xsl:if test="tp:struct">
-      <h2 xmlns="http://www.w3.org/1999/xhtml">Structure types</h2>
-      <xsl:apply-templates select="tp:struct"/>
-    </xsl:if>
-
-    <xsl:if test="tp:mapping">
-      <h2 xmlns="http://www.w3.org/1999/xhtml">Mapping types</h2>
-      <xsl:apply-templates select="tp:mapping"/>
-    </xsl:if>
-
-    <xsl:if test="tp:external-type">
-      <h2 xmlns="http://www.w3.org/1999/xhtml">Types defined elsewhere</h2>
-      <dl><xsl:apply-templates select="tp:external-type"/></dl>
-    </xsl:if>
-  </xsl:template>
-
-  <xsl:template match="tp:error">
-    <h2 xmlns="http://www.w3.org/1999/xhtml"><a name="{concat(../@namespace, '.', translate(@name, ' ', ''))}"></a><xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/></h2>
-    <xsl:apply-templates select="tp:docstring"/>
-  </xsl:template>
-
-  <xsl:template match="/tp:spec/tp:copyright">
-    <div xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:apply-templates/>
-    </div>
-  </xsl:template>
-  <xsl:template match="/tp:spec/tp:license">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="license">
-      <xsl:apply-templates mode="identity"/>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="tp:copyright"/>
-  <xsl:template match="tp:license"/>
-
-  <xsl:template match="interface">
-    <h1 xmlns="http://www.w3.org/1999/xhtml"><a name="{@name}"></a><xsl:value-of select="@name"/></h1>
-
-    <xsl:if test="@tp:causes-havoc">
-      <p xmlns="http://www.w3.org/1999/xhtml" class="causes-havoc">
-        This interface is <xsl:value-of select="@tp:causes-havoc"/>
-        and is likely to cause havoc to your API/ABI if bindings are generated.
-        Don't include it in libraries that care about compatibility.
-      </p>
-    </xsl:if>
-
-    <xsl:if test="tp:requires">
-      <p>Implementations of this interface must also implement:</p>
-      <ul xmlns="http://www.w3.org/1999/xhtml">
-        <xsl:for-each select="tp:requires">
-          <li><code><a href="#{@interface}"><xsl:value-of select="@interface"/></a></code></li>
-        </xsl:for-each>
-      </ul>
-    </xsl:if>
-
-    <xsl:apply-templates select="tp:docstring" />
-
-    <xsl:choose>
-      <xsl:when test="method">
-        <h2 xmlns="http://www.w3.org/1999/xhtml">Methods:</h2>
-        <xsl:apply-templates select="method"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no methods.</p>
-      </xsl:otherwise>
-    </xsl:choose>
-
-    <xsl:choose>
-      <xsl:when test="signal">
-        <h2 xmlns="http://www.w3.org/1999/xhtml">Signals:</h2>
-        <xsl:apply-templates select="signal"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no signals.</p>
-      </xsl:otherwise>
-    </xsl:choose>
-
-    <xsl:choose>
-      <xsl:when test="tp:property">
-        <h2 xmlns="http://www.w3.org/1999/xhtml">Properties:</h2>
-        <dl xmlns="http://www.w3.org/1999/xhtml">
-          <xsl:apply-templates select="tp:property"/>
-        </dl>
-      </xsl:when>
-      <xsl:otherwise>
-        <p xmlns="http://www.w3.org/1999/xhtml">Interface has no properties.</p>
-      </xsl:otherwise>
-    </xsl:choose>
-
-    <xsl:call-template name="do-types"/>
-
-  </xsl:template>
-
-  <xsl:template match="tp:flags">
-    <h3>
-      <a name="type-{@name}">
-        <xsl:value-of select="@name"/>
-      </a>
-    </h3>
-    <xsl:apply-templates select="tp:docstring" />
-    <dl xmlns="http://www.w3.org/1999/xhtml">
-        <xsl:variable name="value-prefix">
-          <xsl:choose>
-            <xsl:when test="@value-prefix">
-              <xsl:value-of select="@value-prefix"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="@name"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
-      <xsl:for-each select="tp:flag">
-        <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
-        <xsl:choose>
-          <xsl:when test="tp:docstring">
-            <dd xmlns="http://www.w3.org/1999/xhtml"><xsl:apply-templates select="tp:docstring" /></dd>
-          </xsl:when>
-          <xsl:otherwise>
-            <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:for-each>
-    </dl>
-  </xsl:template>
-
-  <xsl:template match="tp:enum">
-    <h3 xmlns="http://www.w3.org/1999/xhtml">
-      <a name="type-{@name}">
-        <xsl:value-of select="@name"/>
-      </a>
-    </h3>
-    <xsl:apply-templates select="tp:docstring" />
-    <dl xmlns="http://www.w3.org/1999/xhtml">
-        <xsl:variable name="value-prefix">
-          <xsl:choose>
-            <xsl:when test="@value-prefix">
-              <xsl:value-of select="@value-prefix"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="@name"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
-      <xsl:for-each select="tp:enumvalue">
-        <dt xmlns="http://www.w3.org/1999/xhtml"><code><xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/></code></dt>
-        <xsl:choose>
-          <xsl:when test="tp:docstring">
-            <dd xmlns="http://www.w3.org/1999/xhtml"><xsl:apply-templates select="tp:docstring" /></dd>
-          </xsl:when>
-          <xsl:otherwise>
-            <dd xmlns="http://www.w3.org/1999/xhtml">(Undocumented)</dd>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:for-each>
-    </dl>
-  </xsl:template>
-
-  <xsl:template match="tp:property">
-    <dt xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:if test="@name">
-        <code><xsl:value-of select="@name"/></code> -
-      </xsl:if>
-      <code><xsl:value-of select="@type"/></code>
-    </dt>
-    <dd xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:apply-templates select="tp:docstring"/>
-    </dd>
-  </xsl:template>
-
-  <xsl:template match="tp:mapping">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
-      <h3>
-        <a name="type-{@name}">
-          <xsl:value-of select="@name"/>
-        </a> - a{
-        <xsl:for-each select="tp:member">
-          <xsl:value-of select="@type"/>
-          <xsl:text>: </xsl:text>
-          <xsl:value-of select="@name"/>
-          <xsl:if test="position() != last()"> &#x2192; </xsl:if>
-        </xsl:for-each>
-        }
-      </h3>
-      <div class="docstring">
-        <xsl:apply-templates select="tp:docstring"/>
-      </div>
-      <div>
-        <h4>Members</h4>
-        <dl>
-          <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
-        </dl>
-      </div>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="tp:docstring" mode="in-index"/>
-
-  <xsl:template match="tp:simple-type | tp:enum | tp:flags | tp:external-type"
-    mode="in-index">
-    - <xsl:value-of select="@type"/>
-  </xsl:template>
-
-  <xsl:template match="tp:simple-type">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="simple-type">
-      <h3>
-        <a name="type-{@name}">
-          <xsl:value-of select="@name"/>
-        </a> - <xsl:value-of select="@type"/>
-      </h3>
-      <div class="docstring">
-        <xsl:apply-templates select="tp:docstring"/>
-      </div>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="tp:external-type">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="external-type">
-      <dt>
-        <a name="type-{@name}">
-          <xsl:value-of select="@name"/>
-        </a> - <xsl:value-of select="@type"/>
-      </dt>
-      <dd>Defined by: <xsl:value-of select="@from"/></dd>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="tp:struct" mode="in-index">
-    - ( <xsl:for-each select="tp:member">
-          <xsl:value-of select="@type"/>
-          <xsl:if test="position() != last()">, </xsl:if>
-        </xsl:for-each> )
-  </xsl:template>
-
-  <xsl:template match="tp:mapping" mode="in-index">
-    - a{ <xsl:for-each select="tp:member">
-          <xsl:value-of select="@type"/>
-          <xsl:if test="position() != last()"> &#x2192; </xsl:if>
-        </xsl:for-each> }
-  </xsl:template>
-
-  <xsl:template match="tp:struct">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="struct">
-      <h3>
-        <a name="type-{@name}">
-          <xsl:value-of select="@name"/>
-        </a> - (
-        <xsl:for-each select="tp:member">
-          <xsl:value-of select="@type"/>
-          <xsl:text>: </xsl:text>
-          <xsl:value-of select="@name"/>
-          <xsl:if test="position() != last()">, </xsl:if>
-        </xsl:for-each>
-        )
-      </h3>
-      <div class="docstring">
-        <xsl:apply-templates select="tp:docstring"/>
-      </div>
-      <xsl:choose>
-        <xsl:when test="string(@array-name) != ''">
-          <p>In bindings that need a separate name, arrays of
-            <xsl:value-of select="@name"/> should be called
-            <xsl:value-of select="@array-name"/>.</p>
-        </xsl:when>
-        <xsl:otherwise>
-          <p>Arrays of <xsl:value-of select="@name"/> don't generally
-            make sense.</p>
-        </xsl:otherwise>
-      </xsl:choose>
-      <div>
-        <h4>Members</h4>
-        <dl>
-          <xsl:apply-templates select="tp:member" mode="members-in-docstring"/>
-        </dl>
-      </div>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="method">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="method">
-      <h3 xmlns="http://www.w3.org/1999/xhtml">
-        <a name="{concat(../@name, concat('.', @name))}">
-          <xsl:value-of select="@name"/>
-        </a> (
-        <xsl:for-each xmlns="" select="arg[@direction='in']">
-          <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
-          <xsl:if test="position() != last()">, </xsl:if>
-        </xsl:for-each>
-        ) &#x2192;
-        <xsl:choose>
-          <xsl:when test="arg[@direction='out']">
-            <xsl:for-each xmlns="" select="arg[@direction='out']">
-              <xsl:value-of select="@type"/>
-              <xsl:if test="position() != last()">, </xsl:if>
-            </xsl:for-each>
-          </xsl:when>
-          <xsl:otherwise>nothing</xsl:otherwise>
-        </xsl:choose>
-      </h3>
-      <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
-        <xsl:apply-templates select="tp:docstring" />
-      </div>
-
-      <xsl:if test="arg[@direction='in']">
-        <div xmlns="http://www.w3.org/1999/xhtml">
-          <h4>Parameters</h4>
-          <dl xmlns="http://www.w3.org/1999/xhtml">
-            <xsl:apply-templates select="arg[@direction='in']"
-              mode="parameters-in-docstring"/>
-          </dl>
-        </div>
-      </xsl:if>
-
-      <xsl:if test="arg[@direction='out']">
-        <div xmlns="http://www.w3.org/1999/xhtml">
-          <h4>Returns</h4>
-          <dl xmlns="http://www.w3.org/1999/xhtml">
-            <xsl:apply-templates select="arg[@direction='out']"
-              mode="returns-in-docstring"/>
-          </dl>
-        </div>
-      </xsl:if>
-
-      <xsl:if test="tp:possible-errors">
-        <div xmlns="http://www.w3.org/1999/xhtml">
-          <h4>Possible errors</h4>
-          <dl xmlns="http://www.w3.org/1999/xhtml">
-            <xsl:apply-templates select="tp:possible-errors/tp:error"/>
-          </dl>
-        </div>
-      </xsl:if>
-
-    </div>
-  </xsl:template>
-
-  <xsl:template name="parenthesized-tp-type">
-    <xsl:if test="@tp:type">
-      <xsl:variable name="tp-type" select="@tp:type"/>
-      <xsl:variable name="single-type">
-        <xsl:choose>
-          <xsl:when test="contains($tp-type, '[]')">
-            <xsl:value-of select="substring-before($tp-type, '[]')"/>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:value-of select="$tp-type"/>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:variable>
-      <xsl:choose>
-        <xsl:when test="//tp:simple-type[@name=$tp-type]" />
-        <xsl:when test="//tp:simple-type[concat(@name, '[]')=$tp-type]" />
-        <xsl:when test="//tp:struct[concat(@name, '[]')=$tp-type][string(@array-name) != '']" />
-        <xsl:when test="//tp:struct[@name=$tp-type]" />
-        <xsl:when test="//tp:enum[@name=$tp-type]" />
-        <xsl:when test="//tp:enum[concat(@name, '[]')=$tp-type]" />
-        <xsl:when test="//tp:flags[@name=$tp-type]" />
-        <xsl:when test="//tp:flags[concat(@name, '[]')=$tp-type]" />
-        <xsl:when test="//tp:mapping[@name=$tp-type]" />
-        <xsl:when test="//tp:external-type[concat(@name, '[]')=$tp-type]" />
-        <xsl:when test="//tp:external-type[@name=$tp-type]" />
-        <xsl:otherwise>
-          <xsl:message terminate="yes">
-            <xsl:text>ERR: Unable to find type '</xsl:text>
-            <xsl:value-of select="$tp-type"/>
-            <xsl:text>'&#10;</xsl:text>
-          </xsl:message>
-        </xsl:otherwise>
-      </xsl:choose>
-      (<a href="#type-{$single-type}"><xsl:value-of select="$tp-type"/></a>)
-    </xsl:if>
-  </xsl:template>
-
-  <xsl:template match="tp:member" mode="members-in-docstring">
-    <dt xmlns="http://www.w3.org/1999/xhtml">
-      <code><xsl:value-of select="@name"/></code> -
-      <code><xsl:value-of select="@type"/></code>
-      <xsl:call-template name="parenthesized-tp-type"/>
-    </dt>
-    <dd xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:choose>
-        <xsl:when test="tp:docstring">
-          <xsl:apply-templates select="tp:docstring" />
-        </xsl:when>
-        <xsl:otherwise>
-          <em>(undocumented)</em>
-        </xsl:otherwise>
-      </xsl:choose>
-    </dd>
-  </xsl:template>
-
-  <xsl:template match="arg" mode="parameters-in-docstring">
-    <dt xmlns="http://www.w3.org/1999/xhtml">
-      <code><xsl:value-of select="@name"/></code> -
-      <code><xsl:value-of select="@type"/></code>
-      <xsl:call-template name="parenthesized-tp-type"/>
-    </dt>
-    <dd xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:apply-templates select="tp:docstring" />
-    </dd>
-  </xsl:template>
-
-  <xsl:template match="arg" mode="returns-in-docstring">
-    <dt xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:if test="@name">
-        <code><xsl:value-of select="@name"/></code> -
-      </xsl:if>
-      <code><xsl:value-of select="@type"/></code>
-      <xsl:call-template name="parenthesized-tp-type"/>
-    </dt>
-    <dd xmlns="http://www.w3.org/1999/xhtml">
-      <xsl:apply-templates select="tp:docstring"/>
-    </dd>
-  </xsl:template>
-
-  <xsl:template match="tp:possible-errors/tp:error">
-    <dt xmlns="http://www.w3.org/1999/xhtml">
-      <code><xsl:value-of select="@name"/></code>
-    </dt>
-    <dd xmlns="http://www.w3.org/1999/xhtml">
-        <xsl:variable name="name" select="@name"/>
-        <xsl:choose>
-          <xsl:when test="tp:docstring">
-            <xsl:apply-templates select="tp:docstring"/>
-          </xsl:when>
-          <xsl:when test="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring">
-            <xsl:apply-templates select="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring"/> <em xmlns="http://www.w3.org/1999/xhtml">(generic description)</em>
-          </xsl:when>
-          <xsl:otherwise>
-            (Undocumented.)
-          </xsl:otherwise>
-        </xsl:choose>
-    </dd>
-  </xsl:template>
-
-  <xsl:template match="signal">
-    <div xmlns="http://www.w3.org/1999/xhtml" class="signal">
-      <h3 xmlns="http://www.w3.org/1999/xhtml">
-        <a name="{concat(../@name, concat('.', @name))}">
-          <xsl:value-of select="@name"/>
-        </a> (
-        <xsl:for-each xmlns="" select="arg">
-          <xsl:value-of select="@type"/>: <xsl:value-of select="@name"/>
-          <xsl:if test="position() != last()">, </xsl:if>
-        </xsl:for-each>
-        )</h3>
-      <div xmlns="http://www.w3.org/1999/xhtml" class="docstring">
-        <xsl:apply-templates select="tp:docstring"/>
-      </div>
-
-      <xsl:if test="arg">
-        <div xmlns="http://www.w3.org/1999/xhtml">
-          <h4>Parameters</h4>
-          <dl xmlns="http://www.w3.org/1999/xhtml">
-            <xsl:apply-templates select="arg" mode="parameters-in-docstring"/>
-          </dl>
-        </div>
-      </xsl:if>
-    </div>
-  </xsl:template>
-
-  <xsl:output method="xml" indent="no" encoding="ascii"
-    omit-xml-declaration="yes"
-    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
-
-  <xsl:template match="/tp:spec">
-    <html xmlns="http://www.w3.org/1999/xhtml">
-      <head>
-        <title>
-          <xsl:value-of select="tp:title"/>
-          <xsl:if test="tp:version">
-            <xsl:text> version </xsl:text>
-            <xsl:value-of select="tp:version"/>
-          </xsl:if>
-        </title>
-        <style type="text/css">
-
-          body {
-            font-family: sans-serif;
-            margin: 2em;
-            height: 100%;
-            font-size: 1.2em;
-          }
-          h1 {
-            padding-top: 5px;
-            padding-bottom: 5px;
-            font-size: 1.6em;
-            background: #dadae2;
-          }
-          h2 {
-            font-size: 1.3em;
-          }
-          h3 {
-            font-size: 1.2em;
-          }
-          a:link, a:visited, a:link:hover, a:visited:hover {
-            font-weight: bold;
-          }
-          .topbox {
-            padding-top: 10px;
-            padding-left: 10px;
-            border-bottom: black solid 1px;
-            padding-bottom: 10px;
-            background: #dadae2;
-            font-size: 2em;
-            font-weight: bold;
-            color: #5c5c5c;
-          }
-          .topnavbox {
-            padding-left: 10px;
-            padding-top: 5px;
-            padding-bottom: 5px;
-            background: #abacba;
-            border-bottom: black solid 1px;
-            font-size: 1.2em;
-          }
-          .topnavbox a{
-            color: black;
-            font-weight: normal;
-          }
-          .sidebar {
-            float: left;
-            /* width:9em;
-            border-right:#abacba solid 1px;
-            border-left: #abacba solid 1px;
-            height:100%; */
-            border: #abacba solid 1px;
-            padding-left: 10px;
-            margin-left: 10px;
-            padding-right: 10px;
-            margin-right: 10px;
-            color: #5d5d5d;
-            background: #dadae2;
-          }
-          .sidebar a {
-            text-decoration: none;
-            border-bottom: #e29625 dotted 1px;
-            color: #e29625;
-            font-weight: normal;
-          }
-          .sidebar h1 {
-            font-size: 1.2em;
-            color: black;
-          }
-          .sidebar ul {
-            padding-left: 25px;
-            padding-bottom: 10px;
-            border-bottom: #abacba solid 1px;
-          }
-          .sidebar li {
-            padding-top: 2px;
-            padding-bottom: 2px;
-          }
-          .sidebar h2 {
-            font-style:italic;
-            font-size: 0.81em;
-            padding-left: 5px;
-            padding-right: 5px;
-            font-weight: normal;
-          }
-          .date {
-            font-size: 0.6em;
-            float: right;
-            font-style: italic;
-          }
-          .method {
-            margin-left: 1em;
-            margin-right: 4em;
-          }
-          .signal {
-            margin-left: 1em;
-            margin-right: 4em;
-          }
-
-        </style>
-      </head>
-      <body>
-        <h1 class="topbox">
-          <xsl:value-of select="tp:title" />
-        </h1>
-        <xsl:if test="tp:version">
-          <h2>Version <xsl:apply-templates select="tp:version"/></h2>
-        </xsl:if>
-        <xsl:apply-templates select="tp:copyright"/>
-        <xsl:apply-templates select="tp:license"/>
-        <xsl:apply-templates select="tp:docstring"/>
-
-        <h2>Interfaces</h2>
-        <ul>
-        <xsl:for-each select="node/interface">
-            <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
-          </xsl:for-each>
-        </ul>
-
-        <xsl:apply-templates select="node"/>
-        <xsl:apply-templates select="tp:generic-types"/>
-        <xsl:apply-templates select="tp:errors"/>
-
-        <h1>Index</h1>
-        <h2>Index of interfaces</h2>
-        <ul>
-        <xsl:for-each select="node/interface">
-            <li><code><a href="#{@name}"><xsl:value-of select="@name"/></a></code></li>
-          </xsl:for-each>
-        </ul>
-        <h2>Index of types</h2>
-        <ul>
-          <xsl:for-each select="//tp:simple-type | //tp:enum | //tp:flags | //tp:mapping | //tp:struct | //tp:external-type">
-            <xsl:sort select="@name"/>
-            <li>
-              <code>
-                <a href="#type-{@name}">
-                  <xsl:value-of select="@name"/>
-                </a>
-              </code>
-              <xsl:apply-templates mode="in-index" select="."/>
-            </li>
-          </xsl:for-each>
-        </ul>
-      </body>
-    </html>
-  </xsl:template>
-
-</xsl:stylesheet>
-
-<!-- vim:set sw=2 sts=2 et: -->
diff --git a/tools/identity.xsl b/tools/identity.xsl
deleted file mode 100644 (file)
index 6630f84..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-       <xsl:template match="@*|node()">
-               <xsl:copy>
-                       <xsl:apply-templates select="@*|node()"/>
-               </xsl:copy>
-       </xsl:template>
-</xsl:stylesheet>
diff --git a/tools/spec-to-introspect.xsl b/tools/spec-to-introspect.xsl
deleted file mode 100644 (file)
index ccd06aa..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<!-- Remove Telepathy extensions from a D-Bus interface, trying to leave only
-DTD-compliant introspection XML. The output still needs to be subjected to the
-following sed filter:
-sed -e 's@xmlns:tp="http://telepathy\.freedesktop\.org/wiki/DbusSpec.extensions-v0"@@g'
-
-The master copy of this stylesheet is in the Telepathy spec repository -
-please make any changes there.
-
-Copyright (C) 2006, 2007 Collabora Limited
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
--->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
-  exclude-result-prefixes="tp">
-
-  <xsl:template match="node">
-    <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="*">
-    <xsl:copy>
-      <xsl:for-each select="@*">
-        <xsl:if test="not(starts-with(name(), 'tp:'))">
-          <xsl:copy/>
-        </xsl:if>
-      </xsl:for-each>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="tp:*"/>
-  <xsl:template match="text()"/>
-
-  <xsl:output method="xml" indent="yes" encoding="UTF-8"
-    omit-xml-declaration="yes"/>
-
-</xsl:stylesheet>
-
-<!-- vim:set sw=2 sts=2 et: -->
diff --git a/xml/Accessibility.xml b/xml/Accessibility.xml
deleted file mode 100644 (file)
index 7c8f3f8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<tp:spec xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" xmlns:xi="http://www.w3.org/2001/XInclude">
-
-
-<tp:version>1.24.0</tp:version>
-
-
-
-
-
-<tp:docstring>
- !\mainpage AT-SPI Interfaces and Subinterfaces
-
-  This is the main documentation page for the 
-  Assistive Technology Service Provider Interface (AT-SPI). 
-  
-  \section apps Applications and Interface Components
-  Namespace Accessibility includes service APIs implemented by
-  participating applications and their user interface components:\n\n
-  Accessibility::Accessible\n 
-  Accessibility::Application\n
-  Accessibility::Desktop\n
-  Accessibility::Collecgtion\n
-  Accessibility::Component\n
-  Accessibility::Hypertext\n
-  Accessibility::Image\n
-  Accessibility::Selection\n
-  Accessibility::StreamableContent\n
-  Accessibility::Table\n
-  Accessibility::Text\n
-  Accessibility::EditableText\n
-  Accessibility::Value
-  \section types Enumerated Types
-  Accessibility defines a number of key enumerated types, including:\n\n
-  Accessibility::RelationType\n
-  Accessibility::Role\n
-  Accessibility::StateType\n
-  Accessibility::Event\n
-  Accessibility::EventDetails \n
-  \section Registry
-  Accessibility also includes Accessibility::Registry,
-  which is the service used by assistive technologies and related
-  AT-SPI clients to register interest in certain classes of events,
-  enumerate the currently available desktop and application list,
-  and to synthesize certain kinds of device events.
-  \section listeners Event Listener Interfaces
-  Accessibility::EventListener\n
-  Accessibility::DeviceEventListener
-  \section helpers Helper Interfaces
-  The following interfaces may be implemented by assistive technologies 
-  themselves, in order to export their services in a consistent manner or
-  in order to interoperate with other applications or desktop services.\n
-  Accessibility::LoginHelper : Implemented by adaptive technologies which 
-  need to participate in user-authentication or login activities, and which
-  therefore may need negotiation with authentication agents or processes.\n
-  Accessibility::Selector [NEW]: Implemented by user agents or assistive 
-  technologies which export lists of choices from which the end-user is 
-  expected to make selections.  Useful for various types of remote
-  activation or intercommunication between multiple ATs.
-</tp:docstring>
-
-<!-- Accessibility interfaces and subinterfaces -->
-
-<xi:include href="org.freedesktop.atspi.Accessible.xml"/>
-<xi:include href="org.freedesktop.atspi.Action.xml"/>
-<xi:include href="org.freedesktop.atspi.Collection.xml"/>
-<xi:include href="org.freedesktop.atspi.Component.xml"/>
-<xi:include href="org.freedesktop.atspi.Document.xml"/>
-<xi:include href="org.freedesktop.atspi.Hyperlink.xml"/>
-<xi:include href="org.freedesktop.atspi.Image.xml"/>
-<xi:include href="org.freedesktop.atspi.Selection.xml"/>
-<xi:include href="org.freedesktop.atspi.StreamableContent.xml"/>
-<xi:include href="org.freedesktop.atspi.Table.xml"/>
-<xi:include href="org.freedesktop.atspi.Text.xml"/>
-<xi:include href="org.freedesktop.atspi.Tree.xml"/>
-<xi:include href="org.freedesktop.atspi.Value.xml"/>
-
-<!-- Interfaces derived from Accessibility::Text -->
-<xi:include href="org.freedesktop.atspi.EditableText.xml"/>
-<xi:include href="org.freedesktop.atspi.Hypertext.xml"/>
-<xi:include href="org.freedesktop.atspi.State.xml"/>
-
-<!-- Utility interfaces and interfaces derived from Accessibility::Accessible -->
-
-<xi:include href="org.freedesktop.atspi.Application.xml"/>
-<xi:include href="org.freedesktop.atspi.Registry.xml"/>
-<xi:include href="org.freedesktop.atspi.DeviceEvent.xml"/>
-<xi:include href="org.freedesktop.atspi.Desktop.xml"/>
-<xi:include href="org.freedesktop.atspi.DeviceEventController.xml"/>
-<xi:include href="org.freedesktop.atspi.DeviceEventListener.xml"/>
-<xi:include href="org.freedesktop.atspi.Relation.xml"/>
-<xi:include href="org.freedesktop.atspi.Role.xml"/>
-<xi:include href="org.freedesktop.atspi.LoginHelper.xml"/>
-<xi:include href="org.freedesktop.atspi.Selector.xml"/>
-</tp:spec>
diff --git a/xml/Makefile.am b/xml/Makefile.am
deleted file mode 100644 (file)
index 0c464a9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-XML_SPEC= \
-       Accessibility.xml \
-       org.freedesktop.atspi.Accessible.xml \
-       org.freedesktop.atspi.Action.xml \
-       org.freedesktop.atspi.Application.xml \
-       org.freedesktop.atspi.Collection.xml \
-       org.freedesktop.atspi.Component.xml \
-       org.freedesktop.atspi.Desktop.xml \
-       org.freedesktop.atspi.Document.xml \
-       org.freedesktop.atspi.EditableText.xml \
-       org.freedesktop.atspi.Hyperlink.xml \
-       org.freedesktop.atspi.Hypertext.xml \
-       org.freedesktop.atspi.Image.xml \
-       org.freedesktop.atspi.DeviceEvent.xml \
-       org.freedesktop.atspi.Registry.xml \
-       org.freedesktop.atspi.DeviceEventController.xml \
-       org.freedesktop.atspi.DeviceEventListener.xml \
-       org.freedesktop.atspi.Relation.xml \
-       org.freedesktop.atspi.Role.xml \
-       org.freedesktop.atspi.Selection.xml \
-       org.freedesktop.atspi.State.xml \
-       org.freedesktop.atspi.Table.xml \
-       org.freedesktop.atspi.Text.xml \
-       org.freedesktop.atspi.Tree.xml \
-       org.freedesktop.atspi.Value.xml
-
-spec.xml: $(XML_SPEC)
-       xsltproc --xinclude $(top_srcdir)/tools/identity.xsl $< >$@
-
-# I'm only adding spec.xml because it is needed to build other files that
-# are currently being distributed. -MPG
-EXTRA_DIST = $(XML_SPEC) spec.xml
-
-BUILT_SOURCES = spec.xml
-CLEANFILES = spec.xml
-
-INTROSPECT_FILES = $(addprefix introspection/,$(patsubst %.xml,%,$(filter org.freedesktop.atspi%,$(XML_SPEC))))
-
-$(INTROSPECT_FILES): introspection/%: %.xml ../tools/spec-to-introspect.xsl
-       @mkdir -p introspection
-       xsltproc ../tools/spec-to-introspect.xsl $< |sed -e 's@xmlns:tp="http://telepathy\.freedesktop\.org/wiki/DbusSpec.extensions-v0"@@g' >$@
-
-introspectdir = $(pkgdatadir)/$(DEFAULT_ATSPI_INTROSPECTION_PATH)
-dist_introspect_DATA = $(INTROSPECT_FILES)
diff --git a/xml/introspection/README b/xml/introspection/README
deleted file mode 100644 (file)
index 9e044c6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Files in xml/ are translated into D-Bus introspection
-xml and placed in this directory.
diff --git a/xml/org.freedesktop.atspi.Accessible.xml b/xml/org.freedesktop.atspi.Accessible.xml
deleted file mode 100644 (file)
index 502d2c7..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-
-<tp:enum name="LOCALE_TYPE" type="u">
-  <tp:docstring>
-  Used by Text and Document interfaces these correspond to the POSIX 'setlocale' enum values. 
-  </tp:docstring>
-  <tp:enumvalue suffix="LOCALE_TYPE_MESSAGES"/>
-  <tp:enumvalue suffix="LOCALE_TYPE_COLLATE" value="1"/>
-  <tp:enumvalue suffix="LOCALE_TYPE_CTYPE" value="2"/>
-  <tp:enumvalue suffix="LOCALE_TYPE_MONETARY" value="3"/>
-  <tp:enumvalue suffix="LOCALE_TYPE_NUMERIC" value="4"/>
-  <tp:enumvalue suffix="LOCALE_TYPE_TIME" value="5"/>
-</tp:enum>
-
-<tp:enum name="COORD_TYPE" type="u">
-  <tp:docstring>
-  Used by Component, Image, and Text interfaces to specify whether coordinates are relative to the window or the screen.
-  </tp:docstring>
-  <tp:enumvalue suffix="COORD_TYPE_SCREEN"/>
-  <tp:enumvalue suffix="COORD_TYPE_WINDOW" value="1"/>
-</tp:enum>
-
-<tp:struct name="BoundingBox">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    Used by Component and Text interfaces, a struct defining a bounding rectangle. 
-    The relevant coordinate system is determined by the context of the
-    API call which returned or receives the value.
-  </tp:docstring>
-  <tp:member type="i" tp:name="x">
-  <tp:docstring>
-    The value corresponding to the minimum or leftmost x position. 
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="i" tp:name="y">
-  <tp:docstring>
-    The value corresponding to the minimum y value.  
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="i" tp:name="width">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    The horizontal extent of the bounding box,
-    that is, the difference between the maximum and minimum
-    x coordinate bounds.
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="i" tp:name="height">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      The vertical extent of the bounding box, 
-      that is, the difference between the maximum and minimum
-      y coordinate bounds.
-  </tp:docstring>
-  </tp:member>
-</tp:struct>
-<interface name="org.freedesktop.atspi.Accessible">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The base interface which is implemented by all accessible objects. 
-      All objects support interfaces for querying their contained 'children' 
-      and position in the accessible-object hierarchy, whether or not they
-      actually have children.  </p>
-
-    <p>Events that may be emitted by instances of Accessible include:
-      "object:property-change" A base (strongly-typed) object attribute has changed,
-      for instance "object:property-change:accessible-name".
-      Notifed property subtypes include accessible-name, accessible-description,
-      accessible-parent and accessible-role.</p>
-
-    <p>"object:children-changed" The number or identity of an object's children
-      has changed.
-      
-      "object:state-changed" The object's StateSet has had a state added
-      or removed.
-      
-      "object:active-descendant-changed" If the object includes 
-      STATE_MANAGES_DESCENDANTS, this event is fired to indicate that the 
-      descendant having STATE_ACTIVE has changed; this corresponds to
-      "micro" keyboard focus when the containing/emitting object has
-      "macro" or technical keyboard focus.  For instance, this event is
-      usually emitted while traversing tables and/or spreadsheet cells.
-      
-      "object:attribute-change" A weakly-typed property, as contained in the
-      AttributeSet returned by Accessible::getAttributes, has changed in value,
-      been added, or been removed from the object.
-      ("object:attribute-change" notifications were added in AT-SPI 1.7.0)</p>
-
-  </tp:docstring>
-  <tp:property name="name" type="s" access="readwrite">
-  <tp:docstring>
-    A (short) string representing the object's name.
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="description" type="s" access="readwrite">
-  <tp:docstring>
-    A string describing the object in more detail than name.
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="parent" type="o" access="read">
-  <tp:docstring>
-    The Accessible object which is this object's containing object.
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="childCount" type="i" access="read">
-  <tp:docstring>
-    The number of children contained by this object.
-  </tp:docstring>
-  </tp:property>
-  <method name="getChildAtIndex">
-    <tp:docstring>
-      Get the accessible child of this object at \c index.
-    </tp:docstring>
-    <arg direction="in" name="index" type="i">
-    <tp:docstring>
-      an in parameter indicating which child is requested (zero-indexed).
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-      the 'nth' ::Accessible child of this object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getIndexInParent">
-    <tp:docstring>
-      Get the index of this object in its parent's child list.
-    </tp:docstring>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      A long integer indicating this object's index in the parent's list.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRelationSet">
-    <tp:docstring>
-      Get a set defining this object's relationship to other accessible objects.
-    </tp:docstring>
-    <arg direction="out" type="a(uao)" tp:type="RelationSet">
-    <tp:docstring>
-      A RelationSet defining this object's relationships.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRole">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      Get the Role indicating the type of UI role played by this object.
-    </tp:docstring>
-    <arg direction="out" type="u" tp:type="Role">
-    <tp:docstring>
-      A Role indicating the type of UI role played by this object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRoleName">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      Get a string indicating the type of UI role played by this object.
-    </tp:docstring>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A UTF-8 string indicating the type of UI role played by this object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getLocalizedRoleName">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      Get a string indicating the type of UI role played by this object,
-      translated to the current locale.
-    </tp:docstring>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A UTF-8 string indicating the type of UI role played by this object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getState">
-    <tp:docstring>
-      Get the current state of the object as a StateSet.
-    </tp:docstring>
-    <arg direction="out" type="au" tp:type="StateSet">
-    <tp:docstring>
-      A StateSet encapsulating the currently true states of the object.
-      Returns an array of (currently two) 32-bit integers giving bitwise flags.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAttributes">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get a list of properties applied to this object as a whole, as an 
-        AttributeSet consisting of name-value pairs. As such these attributes
-        may be considered weakly-typed properties or annotations, as distinct
-        from the strongly-typed interface instance data declared using the IDL 
-        "attribute" keyword.</p>
-
-      <p>Not all objects have explicit "name-value pair" AttributeSet properties.      </p>
-
-      <p>Attribute names and values may have any UTF-8 string value, however where possible,
-        in order to facilitate consistent use and exposure of "attribute" properties by
-        applications and AT clients, attribute names and values should chosen from  
-        a publicly-specified namespace where appropriate.</p>
-
-      <p>Where possible, the names and values in the name-value pairs
-        should be chosen from well-established attribute namespaces
-        using standard semantics.       
-        For example, attributes of Accessible objects corresponding to XHTML content 
-        elements should correspond to attribute names and values specified in the w3c 
-        XHTML specification, at http://www.w3.org/TR/xhtml2, where such values are not 
-        already exposed via a more strongly-typed aspect of the AT-SPI API.
-        Metadata names and
-        values should be chosen from the 'Dublin Core' Metadata
-        namespace using Dublin Core semantics:
-        http://dublincore.org/dcregistry/
-        Similarly, relevant structural metadata should be exposed
-        using attribute names and values chosen from the CSS2 and WICD specification:
-        http://www.w3.org/TR/1998/REC-CSS2-19980512
-        WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).    </p>
-
-      <p>Clients seeking semantic or typographical attributes associated with
-        specific character spans of text content should use Text.getAttributeRun instead.
-        The attributes returned by Accessible.getAttributes do not include
-        "text attributes". (See Text.getAttributeRun)</p>
-
-    </tp:docstring>
-    <arg direction="out" type="{ss}" tp:type="AttributeSet">
-    <tp:docstring>
-      An AttributeSet encapsulating any "attribute values" currently defined for the object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getApplication">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the containing Application for this object.</p>
-    </tp:docstring>
-    <arg direction="out" type="o" tp:type="Application">
-    <tp:docstring>
-      The Application instance to which this object belongs.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Action.xml b/xml/org.freedesktop.atspi.Action.xml
deleted file mode 100644 (file)
index 94e1ea8..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-
-<interface name="org.freedesktop.atspi/Action">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface through which a user-actionable user interface
-      component can be manipulated.  Components which react to mouse or
-      keyboard input from the user, (with the exception of pure text entry
-      fields with no other function), should implement this interface.
-      Typical actions include "click", "press", "release" (for instance for
-      buttons), "menu" (for objects which have context menus invokable from 
-      mouse or keyboard), "open" for icons representing files folders, and others.</p>
-  </tp:docstring>
-  <tp:struct name="Action">
-    <tp:member type="s" tp:name="name">
-      <tp:docstring>
-      A string containing the description of the specified action.
-      </tp:docstring>
-    </tp:member>
-    <tp:member type="s" tp:name="description">
-      <tp:docstring>
-       The description of the specified action. The description of an actionmay provide information about the result of action invocation, unlike the action name.
-    </tp:docstring>
-  </tp:member>
-    <tp:member type="s" tp:name="keyBinding">
-      <tp:docstring>
-        A string containing the key binding for the specified action,or an empty string ("") if none exists.
-      </tp:docstring>
-    </tp:member>
-  </tp:struct>
-
-  <tp:property name="nActions" type="i" access="read">
-    <tp:docstring>The number of actions this object supports</tp:docstring>
-  </tp:property>
-
-  <method name="getDescription">
-    <tp:docstring>
-      <p>Get the description for the specified action. The description of an action may provide information about the result of action invocation, unlike the action name.</p>
-    </tp:docstring>
-    <arg type="i" name="index" direction="in">
-      <tp:docstring>The index of the action</tp:docstring>
-    </arg>
-    <arg type="s" direction="out">
-      <tp:docstring>A string containing the description of the specified action</tp:docstring>
-    </arg>
-  </method>
-
-  <method name="getName">
-    <tp:docstring>
-      <p>Get the name of the specified action.  Action names generally describe the user action, i.e. "click" or "press", rather than the result of invoking the action.</p>
-    </tp:docstring>
-    <arg type="i" name="index" direction="in">
-      <tp:docstring>The index of the action</tp:docstring>
-    </arg>
-    <arg type="s" direction="out">
-      <tp:docstring>A string containing the name of the specified action</tp:docstring>
-    </arg>
-  </method>
-
-  <method name="getKeyBinding">
-    <tp:docstring>
-      <p>Get the key binding associated with a specific action.</p>
-    </tp:docstring>
-    <arg type="i" name="index" direction="in">
-      <tp:docstring>The index of the action</tp:docstring>
-    </arg>
-    <arg type="s" direction="out">
-      <tp:docstring>A string containing the key binding for the specified action, or an empty string ("") if none exists.</tp:docstring>
-    </arg>
-  </method>
-
-  <method name="getActions">
-    <tp:docstring>
-      Retrieves the actions associated with the object.
-    </tp:docstring>
-    <arg direction="out" name="index" type="a(sss)" tp:type="Action"/>
-  </method>
-  <method name="doAction">
-    <tp:docstring>
-      Causes the object to perform the specified action.
-    </tp:docstring>
-    <arg direction="in" name="index" type="i">
-    <tp:docstring>
-      The 0-based index of the action to perform.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      A boolean indicating success or failure.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Application.xml b/xml/org.freedesktop.atspi.Application.xml
deleted file mode 100644 (file)
index 71e028a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Application">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface identifying an object which is the root of the
-      user interface Accessible hierarchy associated with a running application.
-      Children of Application are typically, but not exclusively, 
-      top-level windows.</p>
-      
-    <p>It is possible for an element deeper in an Accessibility stack to
-      implement Application, for instance in the case of "embedded applications"
-      which draw into toplevel windows associated with other applications
-      from the user's point of view.</p>
-  </tp:docstring>
-  <tp:property name="toolkitName" type="s" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A string indicating the type of user interface toolkit
-       which is used by the application.</p>
-      <p>Ordinarily clients of the Application should be
-      toolkit-agnostic, dependencies on this property should
-      be avoided where possible.</p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="version" type="s" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A string indicating the version number of the application's
-      accessibility bridge implementation.</p>
-  </tp:docstring>
-  </tp:property>
-  <method name="getLocale">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Gets the locale in which the application is currently operating.
-        For the current message locale, use \a lctype LOCALE_TYPE_MESSAGES.    </p>
-
-    </tp:docstring>
-    <arg direction="in" name="lctype" type="u" tp:type="LOCALE_TYPE">
-    <tp:docstring>
-      <p>The LocaleType for which the locale is queried.</p>
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string compliant with the POSIX standard for locale description.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Collection.xml b/xml/org.freedesktop.atspi.Collection.xml
deleted file mode 100644 (file)
index 2bfc851..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Collection">
-  <tp:enum name="SortOrder" type="u">
-    <tp:enumvalue suffix="SORT_ORDER_INVALID"/>
-    <tp:enumvalue suffix="SORT_ORDER_CANONICAL" value="1"/>
-    <tp:enumvalue suffix="SORT_ORDER_FLOW" value="2"/>
-    <tp:enumvalue suffix="SORT_ORDER_TAB" value="3"/>
-    <tp:enumvalue suffix="SORT_ORDER_REVERSE_CANONICAL" value="4"/>
-    <tp:enumvalue suffix="SORT_ORDER_REVERSE_FLOW" value="5"/>
-    <tp:enumvalue suffix="SORT_ORDER_REVERSE_TAB" value="6"/>
-    <tp:enumvalue suffix="SORT_ORDER_LAST_DEFINED" value="7"/>
-  </tp:enum>
-  <tp:enum name="MatchType" type="u">
-    <tp:enumvalue suffix="MATCH_INVALID"/>
-    <tp:enumvalue suffix="MATCH_ALL" value="1"/>
-    <tp:enumvalue suffix="MATCH_ANY" value="2"/>
-    <tp:enumvalue suffix="MATCH_NONE" value="3"/>
-    <tp:enumvalue suffix="MATCH_EMPTY" value="4"/>
-    <tp:enumvalue suffix="MATCH_LAST_DEFINED" value="5"/>
-  </tp:enum>
-  <tp:enum name="TreeTraversalType" type="u">
-    <tp:enumvalue suffix="TREE_RESTRICT_CHILDREN"/>
-    <tp:enumvalue suffix="TREE_RESTRICT_SIBLING" value="1"/>
-    <tp:enumvalue suffix="TREE_INORDER" value="2"/>
-    <tp:enumvalue suffix="TREE_LAST_DEFINED" value="3"/>
-  </tp:enum>
-  <method name="getMatches">
-    <arg direction="in" name="rule" type="(auuasuauusub)" tp:type="MatchRule"/>
-    <arg direction="in" name="sortby" type="u" tp:type="SortOrder"/>
-    <arg direction="in" name="count" type="i"/>
-    <arg direction="in" name="traverse" type="b" tp:type="boolean"/>
-    <arg direction="out" type="ao" tp:type="AccessibleSet"/>
-  </method>
-  <method name="getMatchesTo">
-    <arg direction="in" name="current_object" type="o" tp:type="Accessible"/>
-    <arg direction="in" name="rule" type="(auuasuauusub)" tp:type="MatchRule"/>
-    <arg direction="in" name="sortby" type="u" tp:type="SortOrder"/>
-    <arg direction="in" name="tree" type="u" tp:type="TreeTraversalType"/>
-    <arg direction="in" name="recurse" type="b" tp:type="boolean"/>
-    <arg direction="in" name="count" type="i"/>
-    <arg direction="in" name="traverse" type="b" tp:type="boolean"/>
-    <arg direction="out" type="ao" tp:type="AccessibleSet"/>
-  </method>
-  <method name="getMatchesFrom">
-    <arg direction="in" name="current_object" type="o" tp:type="Accessible"/>
-    <arg direction="in" name="rule" type="(auuasuauusub)" tp:type="MatchRule"/>
-    <arg direction="in" name="sortby" type="u" tp:type="SortOrder"/>
-    <arg direction="in" name="tree" type="u" tp:type="TreeTraversalType"/>
-    <arg direction="in" name="count" type="i"/>
-    <arg direction="in" name="traverse" type="b" tp:type="boolean"/>
-    <arg direction="out" type="ao" tp:type="AccessibleSet"/>
-  </method>
-  <method name="getActiveDescendant">
-    <arg direction="out" type="o" tp:type="Accessible"/>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Component.xml b/xml/org.freedesktop.atspi.Component.xml
deleted file mode 100644 (file)
index 8eefd2c..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<tp:enum name="ComponentLayer" type="u">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The ComponentLayer of a Component instance indicates its relative stacking order
-      with respect to the onscreen visual representation of the UI.
-      ComponentLayer, in combination with Component 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 ComponentLayer categories support
-      further z-ordering information, with respect to their peers in the same layer:
-      namely, LAYER_WINDOW and 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.  </p>
-
-    <p>The order of layers, from bottom to top, is:
-           <ol>
-               <li>LAYER_BACKGROUND</li>
-               <li>LAYER_WINDOW</li>
-               <li>LAYER_MDI</li>
-               <li>LAYER_CANVAS</li>
-               <li>LAYER_WIDGET</li>
-               <li>LAYER_POPUP</li>
-               <li>LAYER_OVERLAY</li>
-           </ol>
-    </p>
-  </tp:docstring>
-  <tp:enumvalue suffix="LAYER_INVALID">
-  <tp:docstring>
-    Indicates an error condition or uninitialized value. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_BACKGROUND" value="1">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The bottom-most layer, over which everything else is painted. 
-      The 'desktop background' is generally in this layer. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_CANVAS" value="2">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The 'background' layer for most content renderers and UI Component 
-      containers. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_WIDGET" value="3">
-  <tp:docstring>
-    The layer in which the majority of ordinary 'foreground' widgets reside.
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_MDI" value="4">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A special layer between LAYER_CANVAS and LAYER_WIDGET, in which the
-      'pseudo windows' (e.g. the MDI frames) reside. 
-      (See Component.getMDIZOrder) </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_POPUP" value="5">
-  <tp:docstring>
-    A layer for popup window content, above LAYER_WIDGET. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_OVERLAY" value="6">
-  <tp:docstring>
-    The topmost layer. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_WINDOW" value="7">
-  <tp:docstring>
-    The layer in which a toplevel window background usually resides. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="LAYER_LAST_DEFINED" value="8">
-  <tp:docstring>
-    Used only to determine the end of the enumeration. 
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<interface name="org.freedesktop.atspi.Component">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The Component interface is implemented by objects which occupy on-screen space, e.g. objects
-      which have onscreen visual representations.  The methods in Component allow clients to identify
-      where the objects lie in the onscreen coordinate system, their relative size, stacking order, and
-      position.  It also provides a mechanism whereby keyboard focus may be transferred to specific
-      user interface elements programmatically.  This is a 2D API, coordinates of 3D objects are projected into the
-      2-dimensional screen view for purposes of this interface.  </p>
-
-    <p>Events emitted by Component instances include:
-           <ol>
-                   <li><code>"object:bounds-changed"</code></li>
-                   <li><code>"object:visible-data-changed"</code></li>
-           </ol>
-    </p>
-  </tp:docstring>
-  <method name="contains">
-    <arg direction="in" name="x" type="i"/>
-    <arg direction="in" name="y" type="i"/>
-    <arg direction="in" name="coord_type" type="u" tp:type="COORD_TYPE"/>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code>if the specified point lies within the Component's bounding box, <code>False</code> otherwise. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAccessibleAtPoint">
-    <arg direction="in" name="x" type="i"/>
-    <arg direction="in" name="y" type="i"/>
-    <arg direction="in" name="coord_type" type="u" tp:type="COORD_TYPE"/>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-      The Accessible child whose bounding box contains the specified point. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getExtents">
-    <tp:docstring>
-      Obtain the Component's bounding box, in pixels, relative to the specified coordinate system. 
-    </tp:docstring>
-    <arg direction="in" name="coord_type" type="u" tp:type="COORD_TYPE"/>
-    <arg direction="out" type="(iiii)" tp:type="BoundingBox">
-    <tp:docstring>
-      A BoundingBox which entirely contains the object's onscreen visual representation.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getPosition">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the position of the current component in the coordinate system specified
-        by <code>coord_type.</code>
-      </p>
-    </tp:docstring>
-    <arg direction="in" name="coord_type" type="u" tp:type="COORD_TYPE">
-           <tp:docstring>
-           <ol>
-             <li>0 indicates coord_type_xy_screen, coordinates are relative to the display screen, in pixels.</li>
-             <li>1 indicates coord_type_xy_window, coordinates are relative to the current toplevel window, in pixels.</li>
-           </ol>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="x" type="i">
-           <tp:docstring>
-               An out parameter which will be back-filled with the returned x coordinate.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="y" type="i">
-           <tp:docstring>
-                   <p>An out parameter which will be back-filled with the returned y coordinate.</p>
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getSize">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the size, in the coordinate system specified by \c coord_type, 
-        of the rectangular area which fully contains the object's 
-        visual representation, without accounting for viewport clipping. 
-      </p>
-    </tp:docstring>
-    <arg direction="out" name="width" type="i">
-           <tp:docstring>
-               The object's horizontal extents in the specified coordinate system.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="height" type="i">
-           <tp:docstring>
-                   <p>The object's vertical extents in the specified coordinate system.</p>
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getLayer">
-    <arg direction="out" type="u" tp:type="ComponentLayer">
-    <tp:docstring>
-      The ComponentLayer in which this object resides. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getMDIZOrder">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the relative stacking order (i.e. 'Z' order) of an object.
-        Larger values indicate that an object is on "top" of the stack, therefore
-        objects with smaller MDIZOrder may be obscured by objects with a larger MDIZOrder,
-        but not vice-versa. This is only relevant for objects in LAYER_MDI or LAYER_WINDOW </p>
-    </tp:docstring>
-    <arg direction="out" type="n" tp:type="short">
-    <tp:docstring>
-      An integer indicating the object's place in the stacking order.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="grabFocus">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Request that the object obtain keyboard focus.</p>
-    </tp:docstring>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if keyboard focus was successfully transferred to the Component. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAlpha">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the alpha value of the component.  An alpha value of 1.0 or greater
-        indicates that the object is fully opaque, and an alpha value of 0.0 indicates
-        that the object is fully transparent.  Negative alpha values have no defined
-        meaning at this time.    </p>
-
-      <p>Alpha values are used in conjunction with Z-order calculations to
-        determine whether an object wholly or partially obscures another object's 
-        visual intersection, in the event that their bounds intersect.    </p>
-
-    </tp:docstring>
-    <arg direction="out" type="d"/>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Desktop.xml b/xml/org.freedesktop.atspi.Desktop.xml
deleted file mode 100644 (file)
index 2f188c9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Desktop">
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.DeviceEvent.xml b/xml/org.freedesktop.atspi.DeviceEvent.xml
deleted file mode 100644 (file)
index 2c5e71c..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<tp:enum name="KeyEventType" type="u">
-  <tp:docstring>
-    Deprecated, DO NOT USE! 
-  </tp:docstring>
-  <tp:enumvalue suffix="KEY_PRESSED"/>
-  <tp:enumvalue suffix="KEY_RELEASED" value="1"/>
-</tp:enum>
-<tp:enum name="EventType" type="u">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Used to specify the event types of interest to an EventListener, or
-      to identify the type of an event for which notification has been sent. 
-      @see EventTypeSeq, DeviceEvent::type</p>
-  </tp:docstring>
-  <tp:enumvalue suffix="KEY_PRESSED_EVENT">
-  <tp:docstring>
-    &lt; key on a keyboard device was pressed. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="KEY_RELEASED_EVENT" value="1">
-  <tp:docstring>
-    &lt; key on a keyboard device was released. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="BUTTON_PRESSED_EVENT" value="2">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; button on a non-keyboard human interface device 
-      (HID) was pressed </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="BUTTON_RELEASED_EVENT" value="3">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; button on a non-keyboard human interface device 
-      (HID) was pressed </p>
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<tp:enum name="KeySynthType" type="u">
-  <tp:docstring>
-    Used when synthesizing keyboard input via DeviceEventController:generateKeyboardEvent.
-  </tp:docstring>
-  <tp:enumvalue suffix="KEY_PRESS">
-  <tp:docstring>
-    emulate the pressing of a hardware keyboard key. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="KEY_RELEASE" value="1">
-  <tp:docstring>
-    emulate the release of a hardware keyboard key. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="KEY_PRESSRELEASE" value="2">
-  <tp:docstring>
-    a hardware keyboard key is pressed and immediately released. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="KEY_SYM" value="3">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>a symbolic key event is generated, without specifying a hardware key. 
-      @note if the keysym is not present in the current keyboard map,
-      the DeviceEventController 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 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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="KEY_STRING" value="4">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>a string is converted to its equivalent keyboard events and emitted. 
-      If the string consists of complex character or composed characters
-      which are not in the current keymap, string emission is subject to the
-      out-of-keymap limitations described for KeySynthType::KEY_SYM.
-      In practice this limitation primarily effects Chinese and Japanese locales.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<tp:enum name="ModifierType" type="u">
-  <tp:enumvalue suffix="MODIFIER_SHIFT">
-  <tp:docstring>
-    The left or right 'Shift' key 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="MODIFIER_SHIFTLOCK" value="1">
-  <tp:docstring>
-    The ShiftLock or CapsLock key 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="MODIFIER_CONTROL" value="2">
-  <tp:docstring>
-    'Control'/'Ctrl' 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="MODIFIER_ALT" value="3">
-  <tp:docstring>
-    The Alt key (as opposed to AltGr) 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="MODIFIER_META" value="4">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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
-      ModifierType::MODIFIER_META2 means that the 'Mod2Mask' bit is
-      set in the corresponding XEvent.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="MODIFIER_META2" value="5"/>
-  <tp:enumvalue suffix="MODIFIER_META3" value="6"/>
-  <tp:enumvalue suffix="MODIFIER_NUMLOCK" value="7">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A symbolic meta key name that is mapped by AT-SPI to the 
-      appropriate META value, for the convenience of the client.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<tp:struct name="EventListenerMode">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A structure that encapsulates the characteristics of the event notifications
-      that should be sent to an EventListener in response to a call to
-      DeviceEventController::registerKeystrokeListener or 
-      DeviceEventController::registerDeviceEventListener. </p>
-  </tp:docstring>
-  <tp:member type="b" tp:name="synchronous">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; If \c True, specifies that
-      DeviceEventController should block while waiting 
-      for client to process the requested event notifications; 
-      ordinarily should be used only when client needs to perform
-      operations synchronously with event delivery. Note that because
-      of the architecture of device event systems in general,
-      use of this flag may not block delivery of the event to 
-      the currently focussed application unless it is used in 
-      conjunction with the preemptive flag. </p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="b" tp:name="preemptive">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; If \c True, specifies that 
-      Listener is allowed to pre-empt the delivery of the event,
-      effectively "consuming" it such that it is not delivered 
-      to the currently focussed desktop application. 
-      Key events consumed via this API will not be 
-      available for use by other applications or services, so this
-      option should be used sparingly. </p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="b" tp:name="global">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; If \c True, specifies that
-      Event notifications should be sent regardless of whether the
-      currently focussed application participates in the AT-SPI 
-      infrastructure.  On systems with the XEvIE X extension, this flag
-      also allows access to events which are already subject to 
-      interception via a "system keygrab" (as described in the X Window System
-      documentation for XGrabKey).  The 'global' and 'preemptive' flags
-      should only be used together for the purposes of registering
-      "system global key shortcuts" i.e. command keys for use by the
-      assistive technology. </p>
-  </tp:docstring>
-  </tp:member>
-</tp:struct>
-<tp:struct name="DeviceEvent">
-  <tp:docstring>
-    A structure which encapsulates information about a device event. 
-  </tp:docstring>
-  <tp:member type="u" tp:name="type">
-  <tp:docstring>
-    &lt; Identifies the type of the containing DeviceEvent. 
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="i" tp:name="id">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; an identifier which identifies this event in the event stream. 
-      On X Window systems this corresponds to the XEvent serial number.</p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="n" tp:name="hw_code">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; a numeric code which is hardware and system-dependent, identifying the
-      specific hardware button or key on the device for which the event has
-      occurred. On X Window systems, for global key notifications and for most
-      non-global key notifications as well, this code corresponds to the
-      XKeycode.  For switch and button events it indicates the switch
-      or button number.
-      @note
-      For technical reasons, this code may differ from the XKeycode
-      when generated by Java applications for consumption by non-global
-      key listeners.  This is subject to change in future versions of the
-      DeviceEventController implementation.</p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="n" tp:name="modifiers">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; an unsigned short int consisting of zero or more of the following
-      values OR'ed together:
-      \li \c 1&lt;&lt;::MODIFIER_SHIFT   (=1, corresponds to Xlib's ShiftMask)
-      \li \c 1&lt;&lt;::MODIFIER_SHIFTLOCK    (=2, corresponds to Xlib's LockMask)
-      \li \c 1&lt;&lt;::MODIFIER_CONTROL (=4, corresponds to Xlib's ControlMask)
-      \li \c 1&lt;&lt;::MODIFIER_ALT    (=8, corresponds to Xlib's Mod1Mask)
-      \li \c 1&lt;&lt;::MODIFIER_META    (=16, corresponds to Xlib's Mod2Mask)
-      \li \c 1&lt;&lt;::MODIFIER_META2    (=32, corresponds to Xlib's Mod3Mask)
-      \li \c 1&lt;&lt;::MODIFIER_META3    (=64, corresponds to Xlib's Mod4Mask)</p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="i" tp:name="timestamp">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; an unsigned integer representing the time that the 
-      event occurred.  On X Window systems this event is 
-      a time in milliseconds from some arbitrary starting
-      point; it therefore has a cycle time of approximately
-      50 days.</p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="s" tp:name="event_string">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; A string representation of the event.  If is_text is
-      \c True, then this string represents the character or typographic
-      sequence that would be received by a focussed text input field.
-      event_string is in general suitable for exposure to the
-      end-user for purposes of keyboard echo.</p>
-  </tp:docstring>
-  </tp:member>
-  <tp:member type="b" tp:name="is_text">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; \c True if the event results in the insertion of characters 
-      into an input text buffer, or would do so if delivered to a focussed
-      text input field. ¨Typographical¨ key events have this field set to
-      \c True, whereas ¨control¨ key events generally do not.</p>
-  </tp:docstring>
-  </tp:member>
-</tp:struct>
-<tp:struct name="KeyDefinition">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A structure which defines the identity of a key for which notifications
-      are to be requested.  The data in the members of a ::KeyDefinition are used to
-      determine which keyboard events 'match' the notification request filed by a client.  </p>
-
-    <p>@note Ordinarily a KeyDefinition specifies one and only one of the criteria below; 
-      the result of using a KeyDefinition with multiple members defined as nonzero is
-      undefined.  </p>
-
-    <p>@param keycode if nonzero, the numeric, system-dependent value corresponding to a 
-      physical key on the keyboard.  Keycode values have no semantic meaning to the end-user,
-      and may depend on the user's hardware and operating environment.  They therefore are
-      rarely useful "as-is" to AT clients, unless the client has used operating system
-      services to identify the hardward keycode associated with a particular key symbol.
-      Notifications for key events requested by keycode are less dependent on modifier state
-      than \c keysym based notifications, but some hardware (notably many laptops) may generate
-      more than one keycode for the same physical key, depending on the state of physical 
-      shift/modifier keys.
-      @param keysym if nonzero, the numeric value corresponding to the X Keysym of the key for which 
-      notification is requested.  Note that the presence of active modifiers will affect
-      whether notification for key events requested via "keysym" specification takes place, 
-      since the keysym depends on the modifier state for most keys.
-      @param keystring if non-NULL, the string value of the inserted characters if the corresponding
-      key event has ::KeyEvent:is_text set to \c True, or the string representing the
-      'name' of the key.  On X11 systems, the string 'name' of non-printing keysyms corresponds
-      to the values in "keysymdef.h" as provided by Xlib, with the leading "XK_" stripped off.</p>
-  </tp:docstring>
-  <tp:member type="i" tp:name="keycode"/>
-  <tp:member type="i" tp:name="keysym"/>
-  <tp:member type="s" tp:name="keystring"/>
-  <tp:member type="i" tp:name="unused"/>
-</tp:struct>
-</node>
diff --git a/xml/org.freedesktop.atspi.DeviceEventController.xml b/xml/org.freedesktop.atspi.DeviceEventController.xml
deleted file mode 100644 (file)
index a9e4612..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.DeviceEventController">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The interface via which clients request notification of device events, and
-      through which device events may be simulated.</p>
-  </tp:docstring>
-  <method name="registerKeystrokeListener">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Register to intercept keyboard events, and either pass them on or
-        consume them.     </p>
-    </tp:docstring>
-    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
-    <tp:docstring>
-      A DeviceEventListener which will intercept key events.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="keys" type="a(iisi)" tp:type="KeySet">
-    <tp:docstring>
-      A KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="mask" type="u" tp:type="ControllerEventMask">
-    <tp:docstring>
-      A ControllerEventMask filtering the intercepted key events.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="type" type="au" tp:type="KeyEventTypeSeq">
-    <tp:docstring>
-      A KeyEventTypeSeq that may created by ORing event types together.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="mode" type="(bbb)" tp:type="EventListenerMode">
-    <tp:docstring>
-      An EventListenerMode indicating whether the listener should receive the events synchronously, potentially consuming them,or just be notified asynchronously of those events that havebeen generated.@note Some platforms have limited support for global, preemptive EventListenerMode.Such a registration may fail if another client already has priority for preemptiveaccess to one or more of the members of the KeySet.  AT consumers have the optionof re-trying the request without the global flag, or without the preemptive flag,or of re-trying with a different KeySet.  The best support for pre-emptiveglobal keyboard listeners is provided on platforms whose Xserver implementationprovides the XEvIE extension.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the DeviceEventListener was successfully registeredfor the requested KeySet, ControllerEventMask, event types, and EventListenerMode; otherwise returns <code>False</code>.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="deregisterKeystrokeListener">
-    <tp:docstring>
-      De-register a previously registered keyboard eventlistener.
-    </tp:docstring>
-    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
-    <tp:docstring>
-      A DeviceEventListener which will intercept key events.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="keys" type="a(iisi)" tp:type="KeySet">
-    <tp:docstring>
-      A KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="mask" type="u" tp:type="ControllerEventMask">
-    <tp:docstring>
-      A ControllerEventMask filtering the intercepted key events.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="type" type="u" tp:type="KeyEventTypeSeq">
-    <tp:docstring>
-      An EventType mask that may created by ORing event types together.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="registerDeviceEventListener">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Register to intercept events, and either pass them on or
-        consume them. To listen to keyboard events use registerKeystrokeListener
-        instead.</p>
-    </tp:docstring>
-    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
-    <tp:docstring>
-      A DeviceEventListener which will intercept events.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="types" type="u" tp:type="EventTypeSeq">
-    <tp:docstring>
-      An EventTypeSeq indicating which event types to listen for.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if successful, <code>False</code> if not.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="deregisterDeviceEventListener">
-    <tp:docstring>
-      De-register a previously registered keyboard eventlistener.
-    </tp:docstring>
-    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
-    <tp:docstring>
-      a DeviceEventListener which will intercept events.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="types" type="u" tp:type="EventTypeSeq">
-    <tp:docstring>
-      An EventTypeSeq indicating which event types to stoplistening for.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="notifyListenersSync">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Notify the Registry instance that a device event has taken place, and
-        allow pre-emptive listeners the opportunity to 'consume' the event
-        and thus prevent its further issuance/forwarding.  This is the 
-        method used by accessibility bridges to forward "toolkit dependent"
-        device events to the Registry from the application's process space.    </p>
-
-      <p>AT clients do not normally need to use this method, it is intended for use
-        by toolkit bridges and special-purpose applications.    </p>
-    </tp:docstring>
-    <arg direction="in" name="event" type="(uinnisb)" tp:type="DeviceEvent"/>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the event was consumed by a (pre-emptive) listener, <code>False</code> if not (in which case the device event will be forwardedas normal to any application which would normally receive it, e.g.the currently active application in the case of mouse or keyboard events).
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="notifyListenersAsync">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Notify the Registry instance that a device event has taken place in
-        an asynchronous manner.  This is the 
-        method used by accessibility bridges to forward "toolkit dependent"
-        device events to the Registry from the application's process space.
-        If the event in question is potentially pre-emptible.
-        notifyListenersSync should be used instead.    </p>
-
-      <p>AT clients do not normally need to use this method, it is intended for use
-        by toolkit bridges and special-purpose applications.</p>
-    </tp:docstring>
-    <arg direction="in" name="event" type="(uinnisb)" tp:type="DeviceEvent"/>
-  </method>
-  <method name="generateKeyboardEvent">
-    <tp:docstring>
-      Synthesize a keyboard event.
-    </tp:docstring>
-    <arg direction="in" name="keycode" type="i">
-    <tp:docstring>
-      A long integer indicating the keycode ofthe keypress to be synthesized.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="keystring" type="s">
-    <tp:docstring>
-      An optional UTF-8 string indicating a complexkeyboard input event.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="type" type="u" tp:type="KeySynthType">
-    <tp:docstring>
-           <p>A KeySynthType indicating the type of event(s) to be synthesized: a key press, release, press-release pair,or a complex input string (for instance from aninternationalized or complex text input method, ora composed character).</p>
-           
-           <p>Keycode may be truncated before beingprocessed, as keycode length may be platform-dependentand keycode ranges are generally much smaller thanCORBA_long. One or the other of keycode or keystring are generally NULL, (but not both), depending on the value of <code>type</code>.</p>
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="generateMouseEvent">
-    <tp:docstring>
-      Synthesize a mouse event.
-    </tp:docstring>
-    <arg direction="in" name="x" type="i">
-    <tp:docstring>
-      A long integer indicating the screen x coord for the mouse event.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="y" type="i">
-    <tp:docstring>
-      A long integer indicating the screen y coord for the mouse event.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="eventName" type="s">
-    <tp:docstring>
-      A string indicating the type of mouse event, e.g. "button1up"
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.DeviceEventListener.xml b/xml/org.freedesktop.atspi.DeviceEventListener.xml
deleted file mode 100644 (file)
index b2fb9c3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-
-<interface name="org.freedesktop.atspi.DeviceEventListener">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>This interface should be implemented by AT-SPI clients who wish to 
-      make use of the DeviceEventController to receive device event notifications.
-      DeviceEvents include keyboard events and mouse button/motion events.</p>
-  </tp:docstring>
-  <method name="notifyEvent">
-    <tp:docstring>
-      Notify an interested DeviceEventListener that a DeviceEvent has occurred.
-    </tp:docstring>
-    <arg direction="in" name="event" type="(uinnisb)" tp:type="DeviceEvent"/>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the recipient/consumer wishes to consume the event, i.e.prevent it from being delivered to the desktop, <code>False</code> if the event should continue to be delivered as normal.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Document.xml b/xml/org.freedesktop.atspi.Document.xml
deleted file mode 100644 (file)
index 9911377..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Document">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Primarily a 'tagging' interface which indicates the start of 
-      document content in the Accessibility hierarchy.  
-      Accessible objects below the node implementing
-      Document are normally assumed to be part of the document content.
-      Attributes of Document are those attributes associated with the document 
-      as a whole.  Objects that implement Document are normally expected to
-      implement Collection as well.  </p>
-  </tp:docstring>
-  <method name="getLocale">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Gets the locale associated with the document's content.
-        e.g. the locale for LOCALE_TYPE_MESSAGES.    </p>
-    </tp:docstring>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string compliant with the POSIX standard for locale description.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAttributeValue">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Gets the value of a single attribute, if specified for the document as a whole.    </p>
-    </tp:docstring>
-    <arg direction="in" name="attributename" type="s">
-    <tp:docstring>
-      A string indicating the name of a specific attribute (name-value pair) being queried.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string corresponding to the value of the specified attribute, oran empty string if the attribute is unspecified for the object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAttributes">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Gets all attributes specified for a document as a whole.  
-        For attributes which change within 
-        the document content, see Text.getAttributes instead.    </p>
-    </tp:docstring>
-    <arg direction="out" type="{ss}" tp:type="AttributeSet">
-    <tp:docstring>
-      A list of strings containing the attributes of the document, as name-value pairs.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.EditableText.xml b/xml/org.freedesktop.atspi.EditableText.xml
deleted file mode 100644 (file)
index 43ef104..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.EditableText">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Derived from interface Text, EditableText provides methods for
-      modifying textual content of components which support editing.
-      EditableText also interacts with the system clipboard via copyText,
-      cutText, and pasteText.  </p>
-
-    <p>Read-only instances of EditableText are possible; 
-      These may be instances of a general-purpose component type which are
-      sometimes, but not always, user-editable, or may be
-      components which are temporarily or circumstantially
-      in a non-editable state. </p>
-  </tp:docstring>
-  <method name="setTextContents">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Replace the text contents with a new string, discarding the old contents.    </p>
-    </tp:docstring>
-    <arg direction="in" name="newContents" type="s">
-    <tp:docstring>
-      A UTF-8 string with which the text object's contents will be replaced.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the text content was successfully changed, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="insertText">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Insert new text contents into an existing text object at a given location, while retaining
-        the old contents.
-      </p>
-    </tp:docstring>
-    <arg direction="in" name="position" type="i">
-           <tp:docstring>
-        The character offset into the Text implementor's content at which the
-        new content will be inserted.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="text" type="s">
-           <tp:docstring>
-                   A UTF-8 string of which <code>length</code> characters will be inserted into the text 
-        object's text buffer.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="length" type="i">
-           <tp:docstring>
-                   The number of characters of <code>text</code> to insert.  If the character count
-                   of <code>text</code> is less than or equal to <code>length</code>, the entire contents
-                   of <code>text</code> will be inserted.    
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the text content was successfully inserted, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="copyText">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Copy a range of text into the system clipboard.
-      </p>
-    </tp:docstring>
-    <arg direction="in" name="startPos" type="i">
-           <tp:docstring>
-        The character offset of the first character in the range of text being
-        copied.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="endPos" type="i">
-           <tp:docstring>
-        The offset of the first character past the end of the range of text
-       being copied.
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="cutText">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Excise a range of text from a Text object, copying it into the system clipboard.  </p>
-    </tp:docstring>
-    <arg direction="in" name="startPos" type="i">
-    <tp:docstring>
-        The character offset of the first character in the range of text being
-        cut.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="endPos" type="i">
-    <tp:docstring>
-        The offset of the first character past the end of the range of text
-       being cut.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the text was successfully cut, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="deleteText">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Excise a range of text from a Text object without copying it into the system clipboard.  </p>
-    </tp:docstring>
-    <arg direction="in" name="startPos" type="i">
-    <tp:docstring>
-        The character offset of the first character in the range of text being
-        deleted.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="endPos" type="i">
-    <tp:docstring>
-        The offset of the first character past the end of the range of text
-       being deleted.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the text was successfully deleted, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="pasteText">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Copy the text contents of the system clipboard, if any, into a Text object, 
-        inserting it at a particular character offset.    </p>
-    </tp:docstring>
-    <arg direction="in" name="position" type="i">
-           <tp:docstring>
-               <p>The character offset before which the text will be inserted.</p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the text was successfully pasted into the Text object, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Event.xml b/xml/org.freedesktop.atspi.Event.xml
deleted file mode 100644 (file)
index 3a02c3a..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-
-<tp:struct name="Event">
-       <tp:docstring>
-               The generic application event structure. The event source is specified by the D-Bus path
-               and Bus-Name fields in the header of the D-Bus message.
-       </tp:docstring>
-       <tp:member type="s" tp:name="minor"/>
-       <tp:member type="u" tp:name="detail"/>
-       <tp:member type="u" tp:name="detail1"/>
-       <tp:member type="v" tp:name="any_data"/>
-</tp:struct>
-
-<interface name="org.freedesktop.atspi.Event.Object">
-       <signal name="property_change"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="bounds_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="link_selected"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="state_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="children_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="visible_data_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="selection_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="model_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="active_descendant_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="row_inserted"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="row_reordered"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="row_deleted"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="column_inserted"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="column_reordered"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="column_deleted"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="text_bounds_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="text_selection_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="text_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="text_attributes_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="text_caret_moved"><arg direction="out" type="suuv" tp:type="Event"/></signal> 
-       <signal name="attributes_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="text_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-<interface name="org.freedesktop.atspi.Event.Window">
-       <signal name="property_change"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="minimize"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="maximize"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="restore"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="close"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="create"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="reparent"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="desktop_create"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="desktop_destroy"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="destroy"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="activate"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="deactivate"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="raise"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="lower"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="move"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="resize"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="shade"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="unshade"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="restyle"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-<interface name="org.freedesktop.atspi.Event.Mouse">
-       <signal name="abs"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="rel"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="button"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-<interface name="org.freedesktop.atspi.Event.Keyboard">
-       <signal name="modifiers"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-<interface name="org.freedesktop.atspi.Event.Terminal">
-       <signal name="line_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="comumncount_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="linecount_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="application_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="charwidth_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-<interface name="org.freedesktop.atspi.Event.Document">
-       <signal name="load_complete"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="reload"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="load_stopped"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="content_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-       <signal name="attributes_changed"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-<interface name="org.freedesktop.atspi.Event.Focus">
-       <signal name="focus"><arg direction="out" type="suuv" tp:type="Event"/></signal>
-</interface>
-
-</node>
diff --git a/xml/org.freedesktop.atspi.Hyperlink.xml b/xml/org.freedesktop.atspi.Hyperlink.xml
deleted file mode 100644 (file)
index 4b4a6f3..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Hyperlink">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Instances of Hyperlink are returned by Hypertext objects, and are
-      the means by which end users and clients interact with linked, and in
-      some cases embedded, content.  Hyperlinks may have multiple "anchors",
-      where an anchor corresponds to a reference to a particular resource with
-      a corresponding resource identified (URI).  Hyperlinks may be 
-      queried for their URIs, or queried for the objects corresponding to their
-      anchors.  The objects thus obtained are instances of Accessible,
-      and may be queried, and manipulated via the Action interface.   </p>
-
-    <p>A Hyperlink implementor is normally NOT an Accessible; 
-      the preferred usage is for a Hyperlink's associated 'objects'
-      (accessed via the getObject method) are Accessibles.  This means
-      that Actions such as 'open link' are normally invoked on
-      the result of Hyperlink.getObject rather than directly on the 
-      Hyperlink instance. For historical reasons some implementors of Hyperlink
-      implement Action as well.  This usage on the part of implementing
-      applications and toolkits is discouraged, but clients of Hyperlink
-      should be aware of it and prepared to handle such usage.</p>
-  </tp:docstring>
-  <tp:property name="nAnchors" type="n" access="read">
-  <tp:docstring>
-    The number of separate anchors associated with this Hyperlink 
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="startIndex" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The starting offset within the containing Hypertext content 
-      with which this Hyperlink is associated </p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="endIndex" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The ending offset within the containing Hypertext content 
-      with which this Hyperlink is associated; that is, the offset of the
-      first element past the range within the Hypertext associated with
-      this Hyperlink. </p>
-  </tp:docstring>
-  </tp:property>
-  <method name="getObject">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Gets the i'th object, (where i is an integer between 0 and
-        Hyperlink.numAnchors - 1, inclusive) associated with a Hyperlink.
-        The objects returned are usually actionable (i.e. they should implement
-        Accessibility.Action), and the available actions often include
-        'open', 'bookmark', 'save link as', etc.  They may also implement
-        Accessibility.StreamableContent, although clients can normally use 
-        getURI to obtain a resource locator via which the object's
-        data may be accessed.    </p>
-
-      <p>The most common application for 'multi anchor'
-        hyperlinks in HTML is probably 'client side imagemaps'.
-        A clickable image which uses the HTML 'usemap' attribute
-        should have one anchor for every area; element that
-        includes an HREF.  The objects corresponding to these map
-        areas may implement Accessibility.Component, to represent
-        their onscreen bounding box, and may expose their 'shape' as
-        as name-value pair via Accessible.getAttributeSet.</p>
-    </tp:docstring>
-    <arg direction="in" name="i" type="i"/>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-      An Accessible object instance representing theHyperlink's ith anchor, or through which the content associated with the ith anchor can beaccessed.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getURI">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain a resource locator ('URI') which can be used to 
-        access the content to which this link "points" or is connected.</p>
-    </tp:docstring>
-    <arg direction="in" name="i" type="i"/>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string corresponding to the URI of the Hyperlink's'ith' anchor, if one exists, or a NIL string otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="isValid">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Check the hyperlink to see if a connection to its backing
-        content can be established, or if its URI is valid. </p>
-      <p>Instances of invalid hyperlinks include links with malformed
-        URIs, or for which a contact to the service provider
-        specified in the URI cannot be established.</p>
-    </tp:docstring>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the object's content is available, or\c False if the hyperlink's URI is invalid, or a connection to the resource can not be established.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Hypertext.xml b/xml/org.freedesktop.atspi.Hypertext.xml
deleted file mode 100644 (file)
index d1ff4de..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Hypertext">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface used for objects which implement linking between
-      multiple resource or content locations, or multiple 'markers'
-      within a single document.  A Hypertext instance is associated with
-      one or more Hyperlinks, which are associated with particular
-      offsets within the Hypertext's included content.  </p>
-
-    <p>While this interface is derived from Text, 
-      there is no requirement that Hypertext instances have
-      textual content; they may implement Image as well,
-      and Hyperlinks need not have non-zero text offsets.</p>
-  </tp:docstring>
-  <method name="getNLinks">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Query the hypertext object for the number of Hyperlinks it
-        contains.</p>
-    </tp:docstring>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      The number of Hyperlinks associated with this Hypertextobject, as a long integer.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getLink">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get one of the Hyperlinks associated with this Hypertext object,
-        by index.</p>
-    </tp:docstring>
-    <arg direction="in" name="linkIndex" type="i">
-           <tp:docstring>
-               <p>An integer from 0 to getNLinks() - 1.</p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="o" tp:type="Hyperlink">
-    <tp:docstring>
-      The Hyperlink in this Hypertext object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getLinkIndex">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the hyperlink index, if any, associated with a 
-        particular character offset in the Hypertext object.
-        For Hypertext implementors without textual content, all
-        hyperlinks are associated with character offset '0'.    </p>
-
-    </tp:docstring>
-    <arg direction="in" name="characterIndex" type="i"/>
-    <arg direction="out" type="i">
-      <tp:docstring>
-        <p>The index of the Hyperlink associated with character
-           offset <code>characterIndex</code>, or -1 if no Hyperlink is associated
-          with that character offset.
-        </p>
-      </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Image.xml b/xml/org.freedesktop.atspi.Image.xml
deleted file mode 100644 (file)
index 17b63e5..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Image">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface implemented by objects which render image data or 
-      pictorial information to the screen.  When onscreen components include
-      graphical information that is not purely intended to enhance "3d effect"
-      or visual layout, but which conveys some semantic or informational 
-      content to the sighted user, they should implement Image, and that 
-      semantic content should be conveyed textually to the extent possible 
-      via the image description, as well as the Accessible.name and 
-      Accessible.description properties.  </p>
-  </tp:docstring>
-  <tp:property name="imageDescription" type="s" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A UTF-8 string providing a textual description
-      of what is visually depicted in the image.  </p>
-
-    <p>It is recommended that imageDescription be the shorter
-      of the available image descriptions, for instance "alt text"
-      in HTML images, and a longer description be provided in
-      Accessible.description, if available.
-      A short, one or two word label for the image should be provided in
-      Accessible.name.</p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="imageLocale" type="s" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A string corresponding to the POSIX LC_MESSAGES locale used 
-      by the imageDescription.</p>
-  </tp:docstring>
-  </tp:property>
-  <method name="getImageExtents">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain a bounding box which entirely contains the image contents,
-        as displayed on screen.  The bounds returned do not account for
-        any viewport clipping or the fact that the image may be
-        partially or wholly obscured by other onscreen content.
-      </p>
-      <p>This method returns the bounds of the current onscreen
-        view, and not the nominal size of the source data in the
-        event that the original image has been rescaled.    </p>
-    </tp:docstring>
-    <arg direction="in" name="coordType" type="u" tp:type="COORD_TYPE">
-           <tp:docstring>
-      <p>If 0, the returned bounding box position is returned
-        relative to the screen; if 1, the bounding box position is returned 
-        relative to the containing window.</p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="(iiii)" tp:type="BoundingBox">
-    <tp:docstring>
-      A BoundingBox enclosing the image's onscreen representation.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getImagePosition">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the coordinates of the current image position on screen.    </p>
-
-    </tp:docstring>
-    <arg direction="out" name="x" type="i">
-       <tp:docstring>
-        Back-filled with the x coordinate of the 
-        onscreen image (i.e. the minimum x coordinate)
-       </tp:docstring>
-    </arg>
-    <arg direction="out" name="y" type="i">
-       <tp:docstring>
-        Back-filled with the y coordinate of the 
-        onscreen image (i.e. the minimum y coordinate)
-       </tp:docstring>
-    </arg>
-    <arg direction="in" name="coordType" type="u" tp:type="COORD_TYPE">
-       <tp:docstring>
-        If 0, the returned x and y coordinates are 
-        returned relative to the screen; 
-        if 1, they are returned relative to the containing window.
-       </tp:docstring>
-    </arg>
-  </method>
-  <method name="getImageSize">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the width and height of the current onscreen view of the
-        image.  The extents returned do not account for
-        any viewport clipping or the fact that the image may be
-        partially or wholly obscured by other onscreen content.
-      </p>
-      <p>This method returns the size of the current onscreen
-        view, and not the nominal or "original" size of the source 
-       image, in the event that the original image has been rescaled.
-      </p>
-
-    </tp:docstring>
-    <arg direction="out" name="width" type="i">
-           <tp:docstring>
-        Back-filled with the x extents of the 
-        onscreen image (i.e. the image width in pixels)
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="height" type="i">
-           <tp:docstring>
-        Back-filled with the y extents of the 
-        onscreen image (i.e. the image height in pixels)
-           </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Registry.xml b/xml/org.freedesktop.atspi.Registry.xml
deleted file mode 100644 (file)
index 9abced1..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Registry">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The Registry is a service through which applications providing 
-      accessibility services (servers) can rendezvous with consumers of those
-      services (Assistive Technologies).  The Registry is the first "port of call" for 
-      accessible applications and for assistive technologies wishing to query and
-      interact with those applications.  </p>
-
-    <p>The Registry service provides four basic functions to Assistive Technology (AT) clients:
-        <ol>
-            <li>It provides a list of the applications who have registered with the
-                AT-SPI framework, thereby announcing their participation in the AT-SPI framework.</li>
-            <li>It gives access to system device events via the associated DeviceEventController interface.</li>
-        </ol>
-    </p>
-
-    <p>From the point of view of accessible applications (i.e. AT-SPI service producers), 
-      the Registry is primarily a registration and event delivery service.  Applications 
-      normally only call the registerApplication and deregisterApplication Registry methods,
-      and its inherited EventListener::notifyEvent method.  </p>
-
-    <p>Although all application events are dispatched via the Registry, other AT client 
-      calls are serviced directly by the applications, rather than being relayed via the
-      Registry.  The AT client obtains references to these application objects
-      via the enumeration of Desktop instances whose children are Application instances
-      (Registry.getDesktopList) and via examination of the 'source' member of the Event 
-      structure.   </p>
-
-    <p>The Registry normally lives in its own process space; communication via Registry and
-      both application services and AT clients takes place via IPC.  A process space diagram
-      illustrating the relationship between applications, Registry, and AT is shown at:
-      http://developer.gnome.org/projects/gap/tech-docs/SPIBlockDiagram.png  </p>
-  </tp:docstring>
-
-  <method name="getApplications">
-    <tp:docstring>
-        Gets all the currently registered applications.
-    </tp:docstring>
-    <arg direction="out" name="applications" type="as">
-        <tp:docstring>
-            A list of strings containing the D-Bus bus names of the applications.
-        </tp:docstring>
-    </arg>
-  </method>
-
-  <signal name="updateApplications">
-    <tp:docstring>
-        Updates an AT about recently added or removed applications.
-    </tp:docstring>
-    <arg direction="out" name="app" type="is">
-        <tp:docstring>
-                Unique bus name of the application that has been removed or added.
-                The integer is an enumeration:
-                           0 : The application has been removed.
-                           1 : The application has been added.
-        </tp:docstring>
-    </arg>
-  </signal>
-
-  <method name="registerApplication">
-    <tp:docstring>
-      Register a new application with the accessibility registry.
-   </tp:docstring>
-   <arg direction="in" name="app" type="s" tp:type="Application">
-      <tp:docstring>
-         D-Bus Bus name of the application that wishes to be made accessible.
-      </tp:docstring>
-   </arg>
-  </method>
-
-  <method name="deregisterApplication">
-   <tp:docstring>
-      De-register an application from accessibility registry.
-   </tp:docstring>
-   <arg direction="in" name="app" type="s" tp:type="Application">
-      <tp:docstring>
-         D-Bus Bus name of the application that wishes to be made accessible.
-      </tp:docstring>
-   </arg>
-  </method>
-
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Relation.xml b/xml/org.freedesktop.atspi.Relation.xml
deleted file mode 100644 (file)
index 792899c..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<tp:enum name="RelationType" type="u">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>RelationType 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 RELATION_LABELLED_BY relationship may be used to identify labelling information
-      that should accompany the accessibleName property when presenting an object's content or identity
-      to the end user.  Similarly, 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.</p>
-  </tp:docstring>
-  <tp:enumvalue suffix="RELATION_NULL">
-  <tp:docstring>
-    Not a meaningful relationship; clients should not normally encounter this RelationType value. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_LABEL_FOR" value="1">
-  <tp:docstring>
-    Object is a label for one or more other objects. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_LABELLED_BY" value="2">
-  <tp:docstring>
-    Object is labelled by one or more other objects. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_CONTROLLER_FOR" value="3">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Object is an interactive object which modifies the state, onscreen location, or other attributes
-      of one or more target objects. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_CONTROLLED_BY" value="4">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 CONTROLLED_BY scrollbars. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_MEMBER_OF" value="5">
-  <tp:docstring>
-    Object has a grouping relationship (e.g. 'same group as') to one or more other objects.  
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_TOOLTIP_FOR" value="6">
-  <tp:docstring>
-    Object is a tooltip associated with another object. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_NODE_CHILD_OF" value="7">
-  <tp:docstring>
-    Reserved for future use. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_EXTENDED" value="8">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Used to indicate that a relationship exists, but its type is not specified in the enumeration
-      and must be obtained via a call to getRelationTypeName.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_FLOWS_TO" value="9">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_FLOWS_FROM" value="10">
-  <tp:docstring>
-    Reciprocal of RELATION_FLOWS_TO. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_SUBWINDOW_OF" value="11">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_EMBEDS" value="12">
-  <tp:docstring>
-    Similar to SUBWINDOW_OF, but specifically used for cross-process embedding.  
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_EMBEDDED_BY" value="13">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Reciprocal of RELATION_EMBEDS; Used to denote content rendered by embedded renderers that
-      live in a separate process space from the embedding context.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_POPUP_FOR" value="14">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Denotes that the object is a transient window or frame associated with another onscreen object.
-      Similar to 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 a ROLE_WINDOW object with the POPUP_FOR relation
-      usually requires some presentation action on the part of assistive technology clients, even though
-      the previous toplevel ROLE_FRAME object may still be the active window.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_PARENT_WINDOW_OF" value="15">
-  <tp:docstring>
-    This is the reciprocal relation to RELATION_POPUP_FOR. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_DESCRIPTION_FOR" value="16">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates that an object provides descriptive information 
-      about another object; more verbose than RELATION_LABEL_FOR. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_DESCRIBED_BY" value="17">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates that another object provides descriptive information 
-      about this object; more verbose than RELATION_LABELLED_BY. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="RELATION_LAST_DEFINED" value="18">
-  <tp:docstring>
-    Do not use as a parameter value, used to determine the size of the enumeration. 
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-</node>
diff --git a/xml/org.freedesktop.atspi.Role.xml b/xml/org.freedesktop.atspi.Role.xml
deleted file mode 100644 (file)
index ea455fb..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<tp:enum name="Role" type="u">
-  <tp:enumvalue suffix="ROLE_INVALID">
-  <tp:docstring>
-    A Role indicating an error condition, such as uninitialized Role data. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ACCELERATOR_LABEL" value="1">
-  <tp:docstring>
-    Object is a label indicating the keyboard accelerators for the parent  
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ALERT" value="2">
-  <tp:docstring>
-    Object is used to alert the user about something 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ANIMATION" value="3">
-  <tp:docstring>
-    Object contains a dynamic or moving image of some kind 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ARROW" value="4">
-  <tp:docstring>
-    Object is a 2d directional indicator 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_CALENDAR" value="5">
-  <tp:docstring>
-    Object contains one or more dates, usually arranged into a 2d list 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_CANVAS" value="6">
-  <tp:docstring>
-    Object that can be drawn into and is used to trap events 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_CHECK_BOX" value="7">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A choice that can be checked or unchecked and provides a separate
-      indicator for the current state.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_CHECK_MENU_ITEM" value="8">
-  <tp:docstring>
-    A menu item that behaves like a check box (see ROLE_CHECK_BOX) 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_COLOR_CHOOSER" value="9">
-  <tp:docstring>
-    A specialized dialog that lets the user choose a color. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_COLUMN_HEADER" value="10">
-  <tp:docstring>
-    The header for a column of data 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_COMBO_BOX" value="11">
-  <tp:docstring>
-    A list of choices the user can select from 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DATE_EDITOR" value="12">
-  <tp:docstring>
-    An object which allows entry of a date 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DESKTOP_ICON" value="13">
-  <tp:docstring>
-    An inconifed internal frame within a DESKTOP_PANE 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DESKTOP_FRAME" value="14">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A pane that supports internal frames and iconified versions of those
-      internal frames.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DIAL" value="15">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object that allows a value to be changed via rotating a visual element,
-      or which displays a value via such a rotating element. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DIALOG" value="16">
-  <tp:docstring>
-    A top level window with title bar and a border 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DIRECTORY_PANE" value="17">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A pane that allows the user to navigate through and select the contents
-      of a directory</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DRAWING_AREA" value="18">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FILE_CHOOSER" value="19">
-  <tp:docstring>
-    An object used for drawing custom user interface elements.
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FILLER" value="20">
-  <tp:docstring>
-    A object that fills up space in a user interface
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FOCUS_TRAVERSABLE" value="21">
-  <tp:docstring>
-    Don't use, reserved for future use. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FONT_CHOOSER" value="22">
-  <tp:docstring>
-    Allows selection of a display font 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FRAME" value="23">
-  <tp:docstring>
-    A top level window with a title bar, border, menubar, etc. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_GLASS_PANE" value="24">
-  <tp:docstring>
-    A pane that is guaranteed to be painted on top of all panes beneath it 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_HTML_CONTAINER" value="25">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A document container for HTML, whose children
-      represent the document content.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ICON" value="26">
-  <tp:docstring>
-    A small fixed size picture, typically used to decorate components 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_IMAGE" value="27">
-  <tp:docstring>
-    An image, typically static. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_INTERNAL_FRAME" value="28">
-  <tp:docstring>
-    A frame-like object that is clipped by a desktop pane. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_LABEL" value="29">
-  <tp:docstring>
-    An object used to present an icon or short string in an interface 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_LAYERED_PANE" value="30">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A specialized pane that allows its children to be drawn in layers,
-      providing a form of stacking order.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_LIST" value="31">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object that presents a list of objects to the user and allows the
-      user to select one or more of them.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_LIST_ITEM" value="32">
-  <tp:docstring>
-    An object that represents an element of a list. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_MENU" value="33">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object usually found inside a menu bar that contains a list of
-      actions the user can choose from.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_MENU_BAR" value="34">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_MENU_ITEM" value="35">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object usually contained in a menu that presents an action the
-      user can choose.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_OPTION_PANE" value="36">
-  <tp:docstring>
-    A specialized pane whose primary use is inside a DIALOG 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PAGE_TAB" value="37">
-  <tp:docstring>
-    An object that is a child of a page tab list 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PAGE_TAB_LIST" value="38">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object that presents a series of panels (or page tabs), one at a time,
-      through some mechanism provided by the object.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PANEL" value="39">
-  <tp:docstring>
-    A generic container that is often used to group objects. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PASSWORD_TEXT" value="40">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A text object uses for passwords, or other places where the text
-      content is not shown visibly to the user.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_POPUP_MENU" value="41">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PROGRESS_BAR" value="42">
-  <tp:docstring>
-    An object used to indicate how much of a task has been completed. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PUSH_BUTTON" value="43">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object the user can manipulate to tell the application to do
-      something.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_RADIO_BUTTON" value="44">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A specialized check box that will cause other radio buttons in the
-      same group to become uncghecked when this one is checked.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_RADIO_MENU_ITEM" value="45">
-  <tp:docstring>
-    Object is both a menu item and a "radio button" (see ROLE_RADIO_BUTTON) 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ROOT_PANE" value="46">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A specialized pane that has a glass pane and a layered pane as its
-      children.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ROW_HEADER" value="47">
-  <tp:docstring>
-    The header for a row of data 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SCROLL_BAR" value="48">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SCROLL_PANE" value="49">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object that allows a user to incrementally view a large amount
-      of information.  ROLE_SCROLL_PANE objects are usually accompanied by
-      ROLE_SCROLL_BAR controllers, on which the RELATION_CONTROLLER_FOR and
-      RELATION_CONTROLLED_BY reciprocal relations are set; \see 
-      Accessibility::RelationSet.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SEPARATOR" value="50">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object usually contained in a menu to provide a visible and
-      logical separation of the contents in a menu.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SLIDER" value="51">
-  <tp:docstring>
-    An object that allows the user to select from a bounded range 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SPIN_BUTTON" value="52">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object which allows one of a set of choices to be selected, 
-      and which displays the current choice.  Unlike ROLE_SCROLL_BAR,
-      ROLE_SLIDER objects need not control 'viewport'-like objects.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SPLIT_PANE" value="53">
-  <tp:docstring>
-    A specialized panel that presents two other panels at the same time. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_STATUS_BAR" value="54">
-  <tp:docstring>
-    Object displays non-quantitative status information (c.f. ROLE_PROGRESS_BAR) 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TABLE" value="55">
-  <tp:docstring>
-    An object used to repesent information in terms of rows and columns. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TABLE_CELL" value="56">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A 'cell' or discrete child within a Table. \note Table cells need not have ROLE_TABLE_CELL, 
-      other RoleType values are valid as well.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TABLE_COLUMN_HEADER" value="57">
-  <tp:docstring>
-    An object which labels a particular column in a Table. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TABLE_ROW_HEADER" value="58">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object which labels a particular row in a Table. Table rows and columns may also be 
-      labelled via the RELATION_LABEL_FOR/RELATION_LABELLED_BY relationships; 
-      see Accessibility.RelationSet. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TEAROFF_MENU_ITEM" value="59">
-  <tp:docstring>
-    Object allows menu to be removed from menubar and shown in its own window. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TERMINAL" value="60">
-  <tp:docstring>
-    An object that emulates a terminal 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TEXT" value="61">
-  <tp:docstring>
-    An object that presents text to the user, of nonspecific type. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TOGGLE_BUTTON" value="62">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>A specialized push button that can be checked or unchecked, but does
-      not procide a separate indicator for the current state.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TOOL_BAR" value="63">
-  <tp:docstring>
-    A bar or palette usually composed of push buttons or toggle buttons
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TOOL_TIP" value="64">
-  <tp:docstring>
-    An object that provides information about another object
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TREE" value="65">
-  <tp:docstring>
-    An object used to repsent hierarchical information to the user. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_TREE_TABLE" value="66">
-  <tp:docstring>
-    An object that presents both tabular and hierarchical info to the user 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_UNKNOWN" value="67">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The object contains some Accessible information, but its role is
-      not known.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_VIEWPORT" value="68">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object usually used in a scroll pane, or to otherwise clip a larger object or 
-      content renderer to a specific onscreen viewport. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_WINDOW" value="69">
-  <tp:docstring>
-    A ¨top level window¨ with no title or border. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_EXTENDED" value="70">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>means that the role for this item is known, but not included in the 
-      core enumeration </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_HEADER" value="71">
-  <tp:docstring>
-    An object that serves as a document header. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FOOTER" value="72">
-  <tp:docstring>
-    An object that serves as a document footer. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PARAGRAPH" value="73">
-  <tp:docstring>
-    An object which is contains a single paragraph of text content. See also ROLE_TEXT. 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_RULER" value="74">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object which describes margins and tab stops, etc. 
-      for text objects which it controls 
-      (should have CONTROLLER_FOR relation to such). </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_APPLICATION" value="75">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An object corresponding to the toplevel accessible of an 
-      application, which may contain ROLE_FRAME objects or other
-      accessible objects.  Children of AccessibleDesktop objects 
-      are generally ROLE_APPLICATION objects.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_AUTOCOMPLETE" value="76">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_EDITBAR" value="77">
-  <tp:docstring>
-    The object is an editable text object in a toolbar.
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_EMBEDDED" value="78">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_ENTRY" value="79">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The object is a component whose textual content may be entered or modified by the user,
-           provided STATE_EDITABLE is present. </p> 
-    <p>A readonly ROLE_ENTRY object (i.e. where STATE_EDITABLE is not present) implies a
-      read-only 'text field' in a form, as opposed to a title, label, or caption.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_CHART" value="80">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 LABELLED_BY relation is particularly important in interpreting objects of this type,
-      as is the accessible-description property.  
-      See ROLE_CAPTION  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_CAPTION" value="81">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The object contains descriptive information, usually textual, about another user interface
-      element such as a table, chart, or image.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_DOCUMENT_FRAME" value="82">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The object is a visual frame or container which contains a view of document content.  
-      Document frames may occur within another Document instance, in which case the second 
-      document may be said to be embedded in the containing instance.  HTML frames are
-      often ROLE_DOCUMENT_FRAME.  Either this object, or a singleton descendant, should implement
-      the Document interface.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_HEADING" value="83">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.   </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_PAGE" value="84">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The object is a containing instance which encapsulates a page of 
-      information.  ROLE_PAGE is used in documents and content which support
-      a paginated navigation model.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_SECTION" value="85">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_REDUNDANT_OBJECT" value="86">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.   </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_FORM" value="87">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.
-      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, ROLE_FORM containers' components are associated with
-      the current document, rather than the current foreground application or
-      viewer instance.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_LINK" value="88">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 Hypertext/Hyperlink interfaces
-      to indicate the range/location within a text object where
-      an inline or embedded object lies.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_INPUT_METHOD_WINDOW" value="89">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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."  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="ROLE_LAST_DEFINED" value="90">
-  <tp:docstring>
-    Not a valid role, used for finding end of enumeration. 
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-</node>
diff --git a/xml/org.freedesktop.atspi.Selection.xml b/xml/org.freedesktop.atspi.Selection.xml
deleted file mode 100644 (file)
index 3429103..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Selection">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface which indicates that an object exposes a 'selection' model,
-      allowing the selection of one or more of its children.  Read-only Selection
-      instances are possible, in which case the interface is used to programmatically
-      determine the selected-ness of its children.  A selected child has State.STATE_SELECTED,
-      and a child which may hypothetically be selected (though possibly not programmatically
-      selectable) has State.STATE_SELECTABLE.</p>
-      <p>Events emitted by implementors of Selection include:
-      <code>object:selection-changed</code> An instance of Selection has undergone a change in the
-      'selected-ness' of its children, i.e. had a selection added,
-      removed, and/or modified.  Usually accompanied by
-      corresponding <code>object:state-changed:selected</code> events
-      from the corresponding children, unless the children are
-      previously un-queried via AT-SPI and the Selection instance
-      has State.STATE_MANAGES_DESCENDANTS.</p>
-  </tp:docstring>
-  <tp:property name="nSelectedChildren" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The number of children of a Selection implementor which are
-      currently selected.</p>
-  </tp:docstring>
-  </tp:property>
-  <method name="getSelectedChild">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Get the i-th selected Accessible child of a Selection.</p>
-           <p><code>selectedChildIndex</code> refers to the index in the list of 
-        'selected' children as opposed to the more general 'child index'
-        of an object;  as such it generally differs from that used in
-        Accessible.getChildAtIndex() or returned by
-        Accessible.getIndexInParent(). 
-       <code>selectedChildIndex</code> must lie between 0
-        and Selection.nSelectedChildren-1, inclusive.</p>
-    </tp:docstring>
-    <arg direction="in" name="selectedChildIndex" type="i">
-    <tp:docstring>
-      A long integer indicating which of the selected children of an object is being requested.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-           A pointer to a selected Accessible child object,specified by <code>selectedChildIndex</code>.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="selectChild">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Add a child to the selected children list of a Selection.</p>
-           <p>For Selection implementors that only allow
-        single selections, this call may result in the
-        replacement of the (single) current
-       selection.  The call may return <code>False</code> if
-        the child is not selectable (i.e. does not have State.STATE_SELECTABLE), 
-        if the user does not have permission to change the selection, 
-        or if the Selection instance does not have State.STATE_SENSITIVE.    </p>
-    </tp:docstring>
-    <arg direction="in" name="childIndex" type="i">
-    <tp:docstring>
-      A long integer indicating which child of theSelection is to be selected.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the child was successfully selected, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="deselectSelectedChild">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Remove a child to the selected children list of a Selection.</p>
-           <p><code>childIndex</code> is the index in the selected-children list,
-                   not the index in the parent container. <code>selectedChildIndex</code> in this
-                   method, and <code>childIndex</code> in Selection.selectChild
-                   are asymmettric.</p>
-    </tp:docstring>
-    <arg direction="in" name="selectedChildIndex" type="i">
-    <tp:docstring>
-      A long integer indicating which of the selected children of the Selection is to be deselected.  The indexis a zero-offset index into the 'selected child list', nota zero-offset index into the list of all children of the Selection.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the child was successfully deselected, <code>False</code> otherwise, see deselectChild
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="isChildSelected">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Determine whether a particular child of an Selection implementor
-             is currently selected.  Note that <code>childIndex</code> is the zero-offset
-        index into the standard Accessible container's list of children.    </p>
-    </tp:docstring>
-    <arg direction="in" name="childIndex" type="i">
-    <tp:docstring>
-      An index into the Selection's list of children.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the specified child is currently selected,<code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="selectAll">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Attempt to select all of the children of a Selection implementor.
-        Not all Selection implementors support this operation (for instance, 
-        implementations which support only "single selection" do not support this operation).</p>
-    </tp:docstring>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if successful, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="clearSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Attempt to clear all selections (i.e. deselect all children) of a Selection.
-        Not all Selection implementations allow the removal of all selections.    </p>
-
-      <p>This operation may fail if the object must have at least one selected child,
-        if the user does not have permission to change the selection, or if the Selection
-        does not have State.STATE_SENSITIVE.    </p>
-    </tp:docstring>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the selections were successfully cleared, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="deselectChild">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Remove a child from the selected children list of a Selection,
-        if the child is currently selected.    </p>
-
-       <p>Unlike deselectSelectedChild, <code>childIndex</code> is the zero-offset
-        index into the Accessible instance's list of children,
-        not the index into the 'selected child list'.    </p>
-    </tp:docstring>
-    <arg direction="in" name="childIndex" type="i">
-    <tp:docstring>
-      a long integer (the zero offset index into the Accessibleobject's list of children) indicating which child of theSelection is to be selected.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the child was successfully selected, <code>False</code> otherwise, see deselectSelectedChild.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.State.xml b/xml/org.freedesktop.atspi.State.xml
deleted file mode 100644 (file)
index 3581a4d..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<tp:enum name="StateType" type="u">
-  <tp:enumvalue suffix="STATE_INVALID"/>
-  <tp:enumvalue suffix="STATE_ACTIVE" value="1">
-  <tp:docstring>
-    Indicates a window is currently the active window, or is an active subelement within a container or table 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_ARMED" value="2">
-  <tp:docstring>
-    Indicates that the object is armed 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_BUSY" value="3">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_CHECKED" value="4">
-  <tp:docstring>
-    Indicates this object is currently checked 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_COLLAPSED" value="5">
-  <tp:docstring>
-    Indicates this object is collapsed 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_DEFUNCT" value="6">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates that this object no longer has a valid backing widget 
-      (for instance, if its peer object has been destroyed) </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_EDITABLE" value="7">
-  <tp:docstring>
-    Indicates the user can change the contents of this object 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_ENABLED" value="8">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 STATE_SENSITIVE if direct user
-      interaction cannot cause them to acquire STATE_ENABLED.  @see STATE_SENSITIVE.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_EXPANDABLE" value="9">
-  <tp:docstring>
-    Indicates this object allows progressive disclosure of its children 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_EXPANDED" value="10">
-  <tp:docstring>
-    Indicates this object its expanded 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_FOCUSABLE" value="11">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_FOCUSED" value="12">
-  <tp:docstring>
-    Indicates this object currently has the keyboard focus 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_HAS_TOOLTIP" value="13">
-  <tp:docstring>
-    Indicates that the object has an associated tooltip 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_HORIZONTAL" value="14">
-  <tp:docstring>
-    Indicates the orientation of thsi object is horizontal 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_ICONIFIED" value="15">
-  <tp:docstring>
-    Indicates this object is minimized and is represented only by an icon 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_MODAL" value="16">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates something must be done with this object before the user can
-      interact with an object in a different window.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_MULTI_LINE" value="17">
-  <tp:docstring>
-    Indicates this (text) object can contain multiple lines of text 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_MULTISELECTABLE" value="18">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_OPAQUE" value="19">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates this object paints every pixel within its rectangular region.
-      It also indicates an alpha value of unity, if it supports alpha blending. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_PRESSED" value="20">
-  <tp:docstring>
-    Indicates this object is currently pressed 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_RESIZABLE" value="21">
-  <tp:docstring>
-    Indicates the size of this object's size is not fixed 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SELECTABLE" value="22">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SELECTED" value="23">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SENSITIVE" value="24">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates this object is sensitive, e.g. to user interaction. 
-      STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
-      but may be found in the absence of 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 STATE_SENSITIVE, for instance if a user makes 
-      an explicit selection using an object whose current state is ambiguous or undefined.
-      @see STATE_ENABLED, STATE_INDETERMINATE. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SHOWING" value="25">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SINGLE_LINE" value="26">
-  <tp:docstring>
-    Indicates this (text) object can contain only a single line of text 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_STALE" value="27">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates that the information returned for this object may no longer be
-      synchronized with the application state.  This can occur if the object has STATE_TRANSIENT,
-      and can also occur towards the end of the object peer's lifecycle. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_TRANSIENT" value="28">
-  <tp:docstring>
-    Indicates this object is transient 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_VERTICAL" value="29">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_VISIBLE" value="30">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-         <p>Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.</p>
-         <p>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 STATE_VISIBLE and STATE_SHOWING.
-      The absence of STATE_VISIBLE and STATE_SHOWING is semantically equivalent to saying 
-      that an object is 'hidden'.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_MANAGES_DESCENDANTS" value="31">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_INDETERMINATE" value="32">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 STATE_INDETERMINATE
-      if the currently selected text contains a mixture of weight attributes.  
-      In many cases interacting with a STATE_INDETERMINATE object will cause 
-      the context's corresponding boolean attribute to be homogenized, whereupon the object
-      will lose STATE_INDETERMINATE and a corresponding state-changed event will be fired.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_REQUIRED" value="33">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Indicates that user interaction with this object is 'required' from the user, 
-      for instance before completing the processing of a form.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_TRUNCATED" value="34">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-         <p>Indicates that an object's onscreen content is truncated, e.g. a text value in a spreadsheet cell.</p> 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_ANIMATED" value="35">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.</p>
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_INVALID_ENTRY" value="36">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SUPPORTS_AUTOCOMPLETION" value="37">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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 Selection.
-      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.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_SELECTABLE_TEXT" value="38">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>This state indicates that the object in question supports text selection. 
-      It should only be exposed on objects which implement the Text interface, 
-      in order to distinguish this state from STATE_SELECTABLE, which infers that
-      the object in question is a selectable child of an object which implements
-      Selection.  While similar, text selection and subelement selection are
-      distinct operations.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_IS_DEFAULT" value="39">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_VISITED" value="40">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>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.  </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="STATE_LAST_DEFINED" value="41">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>This value of the enumeration should not be used as a parameter, it indicates the number of
-      items in the StateType enumeration.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<interface name="org.freedesktop.atspi.StateSet">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The StateSet interface encapsulates a collection of state information.
-      It allows comparison of state information between object instances, and comparisons
-      of an object's state with some hypothetical collection of states.</p>
-  </tp:docstring>
-  <method name="contains">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Query a StateSet for a specific StateType.</p>
-    </tp:docstring>
-    <arg direction="in" name="state" type="u" tp:type="StateType">
-           <tp:docstring>
-           <p>The StateType being queried for.</p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <Code>True</Code> if the StateSet contains StateType state.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="add">
-    <tp:docstring>
-      Add a StateType to an existing StateSet, if not already present. 
-    </tp:docstring>
-    <arg direction="in" name="state" type="u" tp:type="StateType"/>
-  </method>
-  <method name="remove">
-    <tp:docstring>
-      Remove a StateType to an existing StateSet, if it is present. 
-    </tp:docstring>
-    <arg direction="in" name="state" type="u" tp:type="StateType"/>
-  </method>
-  <method name="equals">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Compare two statesets for equivalence.</p>
-    </tp:docstring>
-    <arg direction="in" name="tarStateSet" type="o" tp:type="StateSet">
-           <tp:docstring>
-           <p>The StateSet to be compared with this one.</p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the two StateSet objects are composed of the same StateTypes. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="compare">
-    <tp:docstring>
-      Compare two StateSet instances and obtain their differences.
-    </tp:docstring>
-    <arg direction="in" name="compareState" type="o" tp:type="StateSet"/>
-    <arg direction="out" type="o" tp:type="StateSet">
-    <tp:docstring>
-      A 'difference set', i.e. a StateSet consisting of those states not shared by the two sets being compared. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="isEmpty">
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the StateSet contains no states. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getStates">
-    <arg direction="out" type="au" tp:type="StateSeq"/>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Table.xml b/xml/org.freedesktop.atspi.Table.xml
deleted file mode 100644 (file)
index 59596d4..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Table">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface used by containers whose contained data is arranged in 
-      a "tabular" (i.e. row/column) fashion.  Tables may resemble a two-dimensional
-      grid, as in a spreadsheet, or may feature objects which span multiple rows and/or
-      columns, but whose bounds are aligned on a row/column matrix.  Thus, the Table
-      interface may be used to represent "spreadsheets" as well as "frames".  </p>
-
-    <p>Objects within tables are children of the Table instance, and they may be referenced
-      either via a child index or via a row/column pair.  
-      Their role may be ROLE_TABLE_CELL, but table 'cells' may have other roles as well.
-      These 'cells' may implement other interfaces, such as Text, Action, Image, 
-      and Component, and should do so as appropriate to their onscreen representation
-      and/or behavior.</p>
-  </tp:docstring>
-  <tp:property name="nRows" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The total number of rows in this table (including empty rows),
-      exclusive of any rows which are programmatically hidden.
-      Rows which are merely scrolled out of view are included.</p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="nColumns" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The total number of columns in this table (including empty columns),
-      exclusive of columns which are programmatically hidden.
-      Columns which are scrolled out of view or clipped by the current
-      viewport are included. </p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="caption" type="o" access="read">
-  <tp:docstring>
-    An Accessible which represents of a caption for a Table.
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="summary" type="o" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An accessible object which summarizes the contents of a Table.
-      This object is frequently itself a Table instance, albeit a simplified one.</p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="nSelectedRows" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The number of rows currently selected.  
-      A selected row is one in which all included cells are selected.
-      Not all tables support row selection.</p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="nSelectedColumns" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The number of columns currently selected.  
-      A selected column is one in which all included cells are selected.
-      Not all tables support column selection.</p>
-  </tp:docstring>
-  </tp:property>
-  <method name="getAccessibleAt">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the table cell at the specified row and column indices.
-        To get the accessible object at a particular (x, y) screen coordinate,
-        use Accessible.getAccessibleAtPoint ().</p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The specified table row, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The specified table column, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-      An Accessible object representing the specified table cell.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getIndexAt">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get 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 Accessible.getAccessibleAtPoint.    </p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The specified table row, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The specified table column, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="i">
-    <tp:docstring>
-           A long integer which serves as the index of a specified cell in the table, 
-           in a form usable by Accessible.getChildAtIndex.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRowAtIndex">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the table row index occupied by the child at a particular 1-D child index.</p>
-    </tp:docstring>
-    <arg direction="in" name="index" type="i">
-    <tp:docstring>
-      The specified child index, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      A long integer indicating the first row spanned by the child of atable, at the specified 1-D (zero-offset) index.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getColumnAtIndex">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the table column index occupied by the child at a particular 1-D child index.</p>
-    </tp:docstring>
-    <arg direction="in" name="index" type="i">
-    <tp:docstring>
-      The specified child index, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="i">
-    <tp:docstring>
-           A long integer indicating the first column spanned by the child of a table, 
-           at the specified 1-D (zero-offset) index.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRowDescription">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get a text description of a particular table row. This differs from
-        AccessibleTable.getRowHeader, which returns an Accessible.</p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The specified table row, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A UTF-8 string describing the specified table row, if available.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getColumnDescription">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get a text description of a particular table column. This differs from
-        AccessibleTable.getColumnHeader, which returns an Accessible.</p>
-    </tp:docstring>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The specified table column, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A UTF-8 string describing the specified table column, if available.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRowExtentAt">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get 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).</p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The specified table row, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The specified table column, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      A long integer indicating the number of rows spanned by the specified cell.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getColumnExtentAt">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get 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).</p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The specified table row, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The specified table column, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      A long integer indicating the number of columns spanned by the specified cell.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRowHeader">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the header associated with a table row, if available.  This differs from
-        getRowDescription, which returns a string.</p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The specified table row, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-      An Accessible representatin of the specified table row, if available.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getColumnHeader">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the header associated with a table column, if available, as an 
-        instance of Accessible. This differs from
-        getColumnDescription, which returns a string.</p>
-    </tp:docstring>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The specified table column, zero-indexed.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="o" tp:type="Accessible">
-    <tp:docstring>
-      An Accessible representatin of the specified table column, if available.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getSelectedRows">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the indices of all rows which are currently selected.  
-         Not all tables support row selection.    </p>
-    </tp:docstring>
-    <arg direction="out" type="ai" tp:type="LongSeq">
-    <tp:docstring>
-      A sequence of integers comprising the indices of rows currently selected.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getSelectedColumns">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the indices of all columns which are currently selected.  
-         Not all tables support column selection.    </p>
-    </tp:docstring>
-    <arg direction="out" type="ai" tp:type="LongSeq">
-    <tp:docstring>
-      A sequence of integers comprising the indices of columns currently selected.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="isRowSelected">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Determine whether a table row is selected.  
-         Not all tables support row selection.    </p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-    <tp:docstring>
-      The row being queried.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-       <code>True</code> if the specified row is currently selected, <code>False</code> if not.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="isColumnSelected">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Determine whether a table column is selected.  
-         Not all tables support column selection.    </p>
-    </tp:docstring>
-    <arg direction="in" name="column" type="i">
-    <tp:docstring>
-      The column being queried.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the specified column is currently selected, <code>False</code> if not.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="isSelected">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Determine whether the cell at a specific row and column is selected.</p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-           <tp:docstring>
-        A row occupied by the cell whose state is being queried.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="column" type="i">
-           <tp:docstring>
-        A column occupied by the cell whose state is being queried.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the specified cell is currently selected, <code>False</code> if not.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="addRowSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Select the specified row, adding it to the current row selection,
-        if the table's selection model permits it.    </p>
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-           <tp:docstring>
-      <p>
-        Possible reasons for addRowSelection to return <code>False</code>
-        include:
-       <ol>
-               <li>The table does not support Selection</li>
-               <li>The table row includes cells which do not have STATE_SELECTABLE</li>
-               <li>The table does not support selection by row</li>
-               <li>The table does not support selection of multiple rows, and one row is already selected.</li>
-               <li>The table does not support non-contiguous selections (i.e.  does not include STATE_MULTISELECTABLE), and the specified row would result in selection of non-contiguous rows.</li>
-               <li>The table does not support user-instigated selection</li>
-       </ol>
-       </p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the specified row was successfully selected, <code>False</code> if not. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="addColumnSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Select the specified column, adding it to the current column selection,
-        if the table's selection model permits it.    </p>
-    </tp:docstring>
-    <arg direction="in" name="column" type="i">
-           <tp:docstring>
-      <p>
-        Possible reasons for addColumnSelection to return <code>False</code>
-        include:
-       <ol>
-               <li>The table does not support Selection</li>
-               <li>The table column includes cells which do not have STATE_SELECTABLE</li>
-               <li>The table does not support selection by column</li>
-               <li>The table does not support selection of multiple column, and one column is already selected.</li>
-               <li>The table does not support non-contiguous selections (i.e.  does not include STATE_MULTISELECTABLE), and the specified column would result in selection of non-contiguous columns.</li>
-               <li>The table does not support user-instigated selection</li>
-       </ol>
-       </p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the specified column was successfully selected, <code>False</code> if not. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="removeRowSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Remove the specified row from current row selection,
-        if the table's selection model permits it.    </p>
-
-    </tp:docstring>
-    <arg direction="in" name="row" type="i">
-           <tp:docstring>
-      <p>
-        Possible reasons for removeRowSelection to return <code>False</code>
-        include:
-       <ol>
-               <li>The table does not support user-instigated Selection</li>
-               <li>The table has no selected rows or does not support deselection by row </li>
-       </ol>
-      </p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the specified row was successfully de-selected, <code>False</code> if not. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="removeColumnSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Remove the specified column from current column selection,
-        if the table's selection model permits it.    </p>
-
-    </tp:docstring>
-    <arg direction="in" name="column" type="i">
-           <tp:docstring>
-      <p>
-        Possible reasons for removeColumnSelection to return \c <code>False</code>
-        include:
-       <ol>
-               <li>The table does not support user-instigated modification of selection state</li>
-               <li>The table has no selected columns or does not support deselection by column.</li>
-       </ol>
-      </p>
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the specified column was successfully de-selected, <code>False</code> if not. 
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRowColumnExtentsAtIndex">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Given a child index, determine 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.), <code>False</code> is returned.    </p>
-
-
-      <p>Example:
-        If the Table child at index '6' extends across columns 5 and 6 of
-        row 2 of a Table instance, and is currently selected, then
-       <code>
-        retval = table::getRowColumnExtentsAtIndex (6, row, col, 
-        row_extents,
-        col_extents,
-        is_selected);
-       </code>
-        will return <code>True</code>, and after the call
-       <code> row, col, row_extents, col_extents, </code>
-       <code>is_selected </code> will contain <code>2,  5,  1,  2,</code> and 
-       <code>True</code>, respectively.
-      </p>
-    </tp:docstring>
-    <arg direction="in" name="index" type="i">
-           <tp:docstring>
-        Ihe index of the Table child whose row/column 
-        extents are requested.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="row" type="i">
-           <tp:docstring>
-        Back-filled with the first table row associated with
-        the cell with child index index.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="col" type="i">
-           <tp:docstring>
-        Back-filled with the first table column associated 
-        with the cell with child index index.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="row_extents" type="i">
-           <tp:docstring>
-        Back-filled with the number of table rows 
-        across which child i extends.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="col_extents" type="i">
-           <tp:docstring>
-        Back-filled with the number of table columns
-        across which child i extends.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="is_selected" type="b" tp:type="boolean">
-           <tp:docstring>
-        A boolean which is back-filled with <code>True</code>
-        if the child at index i corresponds to a selected table cell,
-        <code>False</code> otherwise.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the index is associated with a valid table-cell,
-           <code>False</code> if the index does not correspond to a cell.
-           If <code>False</code> is returned, the values of the out parameters are undefined.
-    </tp:docstring>
-    </arg>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Text.xml b/xml/org.freedesktop.atspi.Text.xml
deleted file mode 100644 (file)
index 54d984f..0000000
+++ /dev/null
@@ -1,696 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<tp:enum name="TEXT_BOUNDARY_TYPE" type="u">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Specifies the boundary conditions determining a run of text as returned from
-      getTextAtOffset, getTextAfterOffset, and getTextBeforeOffset.</p>
-  </tp:docstring>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_CHAR">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Text is bounded by this character only. 
-      Start and end offsets differ by one, by definition, for this value. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_WORD_START" value="1">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Boundary condition is start of a word; i.e. range is from start of
-      one word to the start of another word. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_WORD_END" value="2">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Boundary condition is the end of a word; i.e. range is from 
-           the end of one word to the end of another.</p>
-    <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_SENTENCE_START" value="3">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Boundary condition is start of a sentence, as determined 
-           by the application.</p>
-      <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_SENTENCE_END" value="4">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Boundary condition is end of a sentence, as determined by the application, 
-           including the sentence-delimiting character, for instance '.'</p>
-      <p>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.</p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_LINE_START" value="5">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p> 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. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_BOUNDARY_LINE_END" value="6">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p> 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. </p>
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<tp:enum name="TEXT_CLIP_TYPE" type="u">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>TEXT_CLIP_TYPE:
-      CLIP_MIN means text clipped by min coordinate is omitted,
-      CLIP_MAX clips text interescted by the max coord, and CLIP_BOTH
-      will retain only text falling fully within the min/max bounds.  </p>
-  </tp:docstring>
-  <tp:enumvalue suffix="TEXT_CLIP_NONE"/>
-  <tp:enumvalue suffix="TEXT_CLIP_MIN" value="1">
-  <tp:docstring>
-    Characters/glyphs clipped by the minimum coordinate are omitted 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_CLIP_MAX" value="2">
-  <tp:docstring>
-    Characters/glyphs which intersect the maximum coordinate are omitted 
-  </tp:docstring>
-  </tp:enumvalue>
-  <tp:enumvalue suffix="TEXT_CLIP_BOTH" value="3">
-  <tp:docstring>
-    Only glyphs falling entirely within the region bounded by min and max are retained. 
-  </tp:docstring>
-  </tp:enumvalue>
-</tp:enum>
-<interface name="org.freedesktop.atspi.Text">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The text interface should be implemented by objects which place textual information onscreen as character
-      strings or glyphs.  The text interface allows access to textual content, including display attributes and
-      semantic hints associated with runs of text, and access to bounding box information for glyphs and substrings.
-      It also allows portions of textual content to be selected, if the object's StateSet includes
-      STATE_SELECTABLE_TEXT.   </p>
-
-    <p>In some cases a Text object may have, as its content, an empty string.  In particular this can
-      occur in the case of Hypertext objects which do not display explicitly textual information onscreen,
-      as Hypertext is derived from the Text interface, see Hypertext.  </p>
-
-    <p>Typographic and semantic attributes of onscreen textual content, for instance typeface, weight, 
-      language, and such qualities as 'emphasis' or 'blockquote', are represented as text attributes.
-      Contiguous sequences of characters over which these attributes are unchanged are referred to as
-      'attribute runs', and are available via Text.getAttributeRun.  Where possible, implementing clients
-      will report textual attributes which are the same over the entire text object, for instance those
-      inherited from a default or document-scope style, via getDefaultAttributes instead of reporting them
-      explicitly for each character.  Therefore, for any span of text, the attributes in effect are the union
-      of the set returned by Text.getDefaultAttributes, and the set returned at a particular character
-      offset via Text.getAttributeRun.  </p>
-
-    <p>Events that may be emitted by instances of Text include:
-           <ol>
-                   <li>'object:text-attributes-changed' The attributes of a range of text, or the range 
-                           over which attributes apply, has changed.</li>
-                   <li>'object:text-changed' The text content of this object has changed.</li>
-                   <li>'object:text-bounds-changed' The character bounds of a text object have changed,
-                           for instance in response to a reformatting or reflow operation.</li>
-                   <li>'object:text-caret-moved' The character offset of the text caret 
-                           (visible or notional) within this object has changed.  Events of this
-                           type may also be generated when an onscreen text caret appears or disappears.</li>
-                   <li>'object:text-selection-changed' The range or number of text selections within
-                           this text object has changed.</li>
-           </ol>
-    </p>
-
-    <p>In some cases, objects which are not onscreen may implement Text, but if such objects
-      implement Component, their potential visibility should be examined (via comparison with STATE_VISIBLE 
-      and STATE_SHOWING) before exposing them to the user.  Objects which implement Text but not Component 
-      may be encountered in special-purpose interfaces or as special 'accessibility' extensions to visual 
-      interfaces to allow non-graphical access to application features.  These instances should be considered 
-      the exception, rather than the rule.</p>
-  </tp:docstring>
-  <tp:struct name="Range">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>A structure used to define a continguous range of text, including its 
-        (unattributed) textual content. </p>
-    </tp:docstring>
-    <tp:member type="i" tp:name="startOffset"/>
-    <tp:member type="i" tp:name="endOffset"/>
-    <tp:member type="s" tp:name="content"/>
-    <tp:member type="v" tp:name="data"/>
-  </tp:struct>
-  <tp:property name="characterCount" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The total current number of characters in the Text object, 
-      including whitespace and non-spacing characters.  </p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="caretOffset" type="i" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The current offset of the text caret in the Text object.  
-      This caret may be virtual, e.g. non-visual and notional-only, but if an
-      onscreen representation of the caret position is visible, it will correspond to this offset.
-      The caret offset is given as a character offset, as opposed to a byte offset into 
-      a text buffer or a column offset. </p>
-  </tp:docstring>
-  </tp:property>
-  <method name="getText">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain all or part of the onscreen textual content of a Text object.  If endOffset is specified as 
-        "-1", then this method will return the entire onscreen textual contents of the Text object.
-        onscreen' in this context means "potentially onscreen", this method does not perform any sort 
-        of coordinate visibility clipping or window-stack-ordering clipping.  The text thus reported 
-        corresponds to the text which would be presented onscreen if the object implementing the Text interface
-        were entirely unobscured. </p>
-    </tp:docstring>
-    <arg direction="in" name="startOffset" type="i"/>
-    <arg direction="in" name="endOffset" type="i"/>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      The textual content of the current Text object beginning startOffset (inclusive) up to but not including the character at endOffset.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="setCaretOffset">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Programmatically move the text caret (visible or virtual, as above) to a given position.</p> 
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        A long int indicating the desired character offset.  Not all implementations of
-        Text will honor setCaretOffset requests, so the return value below should be checked by the client.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the request was carried out, or <code>False</code> if the caret could not be moved to the requested position.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getTextBeforeOffset">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Obtain a subset of the text content of an object which entirely precedes <code>offset</code>,
-                   delimited by character, word, line, or sentence boundaries as specified by <code>type</code>. The
-                   starting and ending offsets of the resulting substring are returned in <code>startOffset</code>
-                   and <code>startOffset</code>.  By definition, if such a substring exists, <code>startOffset</code>
-                   is less than or equal to <code>offset.</code></p>
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        The offset from which the substring search begins.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="type" type="u" tp:type="TEXT_BOUNDARY_TYPE">
-           <tp:docstring>
-        The text-boundary delimiter which determines whether the returned text constitures
-        a character, word, line, or sentence (and possibly attendant whitespace), 
-        and whether the start or ending of such a substring forms the boundary condition.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string which is a substring of the text content of the object, delimited by the specified boundary condition.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="startOffset" type="i">
-           <tp:docstring>
-        Back-filled with the starting offset of the resulting substring, if one exists.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="endOffset" type="i">
-           <tp:docstring>
-        Back-filled with the offset of the character immediately following the resulting
-        substring, if one exists.
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getTextAtOffset">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Obtain a subset of the text content of an object which includes the specified <code>offset</code>, 
-             delimited by character, word, line, or sentence boundaries as specified by <code>type</code>.  The
-       starting and ending offsets of the resulting substring are returned in <code>startOffset</code>
-       and <code>endOffset</code>.</p>
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        The offset from which the substring search begins, and which must 
-        lie within the returned substring.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="type" type="u" tp:type="TEXT_BOUNDARY_TYPE">
-           <tp:docstring>
-        The text-boundary delimiter which determines whether the returned text constitutes
-        a character, word, line, or sentence (and possibly attendant whitespace), 
-        and whether the start or ending of such a substring forms the boundary condition.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string which is a substring of the text content of the object, delimited by the specified boundary condition.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="startOffset" type="i">
-           <tp:docstring>
-        Back-filled with the starting offset of the resulting substring, if one exists.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="endOffset" type="i">
-           <tp:docstring>
-        Back-filled with the offset of the character immediately following the resulting
-        substring, if one exists.
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getTextAfterOffset">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-           <p>Obtain a subset of the text content of an object which entirely follows <code>offset</code>,
-                   delimited by character, word, line, or sentence boundaries as specified by <code>type</code>. The
-                   starting and ending offsets of the resulting substring are returned in <code>startOffset</code>
-                   and <code>endOffset</code>. By definition, if such a substring exists, <code>startOffset</code>
-                   must be greater than <code>offset</code>.</p>
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        The offset from which the substring search begins, and which must 
-        lie before the returned substring.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="type" type="u" tp:type="TEXT_BOUNDARY_TYPE">
-           <tp:docstring>
-        The text-boundary delimiter which determines whether the returned text constitures
-        a character, word, line, or sentence (and possibly attendant whitespace), 
-        and whether the start or ending of such a substring forms the boundary condition.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      A string which is a substring of the text content of the object, delimited by the specified boundary condition.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="startOffset" type="i">
-           <tp:docstring>
-        Back-filled with the starting offset of the resulting substring, if one exists.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="endOffset" type="i">
-           <tp:docstring>
-        Back-filled with the offset of the character immediately following the resulting
-        substring, if one exists.
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getCharacterAtOffset">
-    <arg name="offset" type="i" direction="in"/>
-    <arg type="i" direction="out">
-      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-        An unsigned long integer whose value corresponds to the UCS-4 representation of the
-        character at the specified text offset, or 0 if offset is out of range.
-        long instead of wchar, to allow unicode chars 16 bits
-      </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAttributeValue">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the string value of a named attribute at a given offset, if defined.</p>
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        The offset of the character for which the attribute run is to be obtained.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="attributeName" type="s">
-           <tp:docstring>
-        The name of the attribute for which the value is to be returned, if defined.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="s">
-    <tp:docstring>
-      The value of attribute (name-value pair) corresponding to "name", if defined. 
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="startOffset" type="i">
-           <tp:docstring>
-        Back-filled with the offset of the first character in the attribute run
-       containing the character at <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="endOffset" type="i">
-           <tp:docstring>
-        Back-filled with the offset of the first character past the end of the
-       attribute run containing the character at <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="defined" type="b" tp:type="boolean">
-           <tp:docstring>
-       Back-filled with <code>True</code> if the attributeName has a defined value at <code>offset</code>,
-        <code>False</code> otherwise.
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getAttributes">
-    <tp:docstring>
-      getAttributes is deprecated in favor of getAttributeRun.
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i"/>
-    <arg direction="out" type="{ss}">
-    <tp:docstring>
-      The attributes at offset, as a semicolon-delimited set of colon-delimited name-value pairs. @see getAttributeRun
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="startOffset" type="i"/>
-    <arg direction="out" name="endOffset" type="i"/>
-  </method>
-  <method name="getDefaultAttributes">
-    <tp:docstring>
-      Deprecated in favor of getDefaultAttributeSet.
-    </tp:docstring>
-    <arg direction="out" type="{ss}">
-    <tp:docstring>
-      The attributes which apply to the entire text content, but which were not explicitlyspecified by the content creator.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getCharacterExtents">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain a the bounding box, as x, y, width, and height, of the character or glyph at a particular 
-        character offset in this object's text content.  The coordinate system in which the results are
-        reported is specified by coordType.  If an onscreen glyph corresponds to multiple character offsets,
-        for instance if the glyph is a ligature, the bounding box reported will include the entire glyph and
-       therefore may apply to more than one character offset.</p>
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        The character offset of the character or glyph being queried.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="x" type="i">
-           <tp:docstring>
-        The minimum horizontal coordinate of the bounding box of the glyph representing 
-       the character at <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="y" type="i">
-           <tp:docstring>
-        The minimum vertical coordinate of the bounding box of the glyph representing 
-       the character at <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="width" type="i">
-           <tp:docstring>
-        The horizontal extent of the bounding box of the glyph representing 
-       the character at <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="height" type="i">
-           <tp:docstring>
-        The vertical extent of the bounding box of the glyph representing 
-       the character at <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="coordType" type="u" tp:type="COORD_TYPE">
-           <tp:docstring>
-                   <p>If 0, the results will be reported in screen coordinates, i.e. in pixels
-        relative to the upper-left corner of the screen, with the x axis pointing right
-        and the y axis pointing down.
-        If 1, the results will be reported relative to the containing toplevel window,
-        with the x axis pointing right and the y axis pointing down.</p>
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getOffsetAtPoint">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the offset of the character at a given onscreen coordinate.  The coordinate system used to interpret
-        x and y is determined by parameter coordType.</p>
-    </tp:docstring>
-    <arg direction="in" name="x" type="i"/>
-    <arg direction="in" name="y" type="i"/>
-    <arg direction="in" name="coordType" type="u" tp:type="COORD_TYPE">
-           <tp:docstring>
-        If 0, the input coordinates are interpreted relative to the entire screen, if 1,
-        they are relative to the toplevel window containing this Text object.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      The text offset (as an offset into the character array) of the glyph whose onscreen bounds contain the point x,y, or -1 if the point is outside the bounds of any glyph.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getNSelections">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the number of separate, contiguous selections in the current Text object.
-        Text objects which do not implement selection of discontiguous text regions will always
-        return '0' or '1'.  Note that "contiguous" is defined by continuity of the offsets, i.e.
-        a text 'selection' is defined by a start/end offset pair.  In the case of bidirectional text,
-        this means that a continguous selection may appear visually discontiguous, and vice-versa.    </p>
-    </tp:docstring>
-    <arg direction="out" type="i">
-    <tp:docstring>
-      The number of contiguous selections in the current Text object.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>The result of calling getSelection with an out-of-range selectionNum (i.e. for a selection 
-        which does not exist) is not strictly defined, but should set endOffset equal to startOffset.</p>
-    </tp:docstring>
-    <arg direction="in" name="selectionNum" type="i"/>
-    <arg direction="out" name="startOffset" type="i"/>
-    <arg direction="out" name="endOffset" type="i"/>
-  </method>
-  <method name="addSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>The result of calling addSelection on objects which already have one selection present, and which
-        do not include STATE_MULTISELECTABLE, is undefined, other than the return value.</p>
-    </tp:docstring>
-    <arg direction="in" name="startOffset" type="i"/>
-    <arg direction="in" name="endOffset" type="i"/>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> of the selection was successfully added, <code>False</code> otherwise. Selection mayfail if the object does not support selection of text (see STATE_SELECTABLE_TEXT), if theobject does not support multiple selections and a selection is already defined, or for other reasons(for instance if the user does not have permission to copy the text into the relevant selection buffer).
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="removeSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Deselect the text contained in the specified selectionNum, if such a selection
-        exists, otherwise do nothing.  Removal of a non-existant selectionNum has no effect.</p>
-    </tp:docstring>
-    <arg direction="in" name="selectionNum" type="i"/>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      <code>True</code> if the selection was successfully removed, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="setSelection">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Modify an existing selection's start or ending offset.     </p>
-
-      <p>Calling setSelection for a selectionNum that is not already defined has no effect.
-        The result of calling setSelection with a selectionNum greater than 0 for objects that
-        do not include STATE_MULTISELECTABLE is undefined.</p>
-    </tp:docstring>
-    <arg direction="in" name="selectionNum" type="i">
-           <tp:docstring>
-        Indicates which of a set of non-contiguous selections to modify.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="startOffset" type="i">
-           <tp:docstring>
-        The new starting offset for the selection
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="endOffset" type="i">
-           <tp:docstring>
-        The new ending offset for the selection
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-           <code>True</code> if the selection corresponding to selectionNum is successfully 
-           modified, <code>False</code> otherwise.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getRangeExtents">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Obtain the bounding box which entirely contains a given text range.
-        Negative values may be returned for the bounding box parameters in the event
-        that all or part of the text range is offscreen or not mapped to the screen.</p>
-    </tp:docstring>
-    <arg direction="in" name="startOffset" type="i">
-    <tp:docstring>
-        @param startOffset the offset of the first character in the specified range.
-    </tp:docstring>
-    </arg>
-    <arg direction="in" name="endOffset" type="i">
-    <tp:docstring>
-        The offset of the character immediately after the last 
-        character in the specified range.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="x" type="i">
-    <tp:docstring>
-        An integer parameter which is back-filled with the minimum
-        horizontal coordinate of the resulting bounding box.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="y" type="i">
-    <tp:docstring>
-        An integer parameter which is back-filled with the minimum
-        vertical coordinate of the resulting bounding box.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="width" type="i">
-    <tp:docstring>
-        An integer parameter which is back-filled with the
-        horizontal extent of the bounding box.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="height" type="i">
-    <tp:docstring>
-    </tp:docstring>
-        An integer parameter which is back-filled with the
-        vertical extent of the bounding box.
-    </arg>
-    <arg direction="in" name="coordType" type="u" tp:type="COORD_TYPE">
-    <tp:docstring>
-        If 0, the above coordinates are reported in pixels relative to
-        corner of the screen; if 1, the coordinates are reported relative to the
-        corner of the containing toplevel window.
-    </tp:docstring>
-    </arg>
-  </method>
-  <method name="getBoundedRanges">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Return the text content within a bounding box, 
-        as a list of Range structures.
-        Depending on the TEXT_CLIP_TYPE parameters, glyphs which are clipped by the
-        bounding box (i.e. which lie partially inside and partially outside it)
-        may or may not be included in the ranges returned.  
-        This method may be of particular interest to screen review algorithms.</p>
-    </tp:docstring>
-    <arg direction="in" name="x" type="i">
-           <tp:docstring>
-        The minimum x ( i.e. leftmost)  coordinate of the bounding box.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="y" type="i">
-           <tp:docstring>
-        The minimum y coordinate of the bounding box.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="width" type="i">
-           <tp:docstring>
-        The horizontal size of the bounding box.  The rightmost bound of the bounding box
-        is (x + width);
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="height" type="i">
-           <tp:docstring>
-        The vertical size of the bounding box.  The maximum y value of the bounding box
-        is (y + height);
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="coordType" type="u" tp:type="COORD_TYPE">
-           <tp:docstring>
-        If 0, the above coordinates are interpreted as pixels relative to
-        corner of the screen; if 1, the coordinates are interpreted as pixels relative to the
-        corner of the containing toplevel window.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="xClipType" type="u" tp:type="TEXT_CLIP_TYPE">
-           <tp:docstring>
-        Determines whether text which intersects the bounding box in the x direction
-        is included.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="yClipType" type="u" tp:type="TEXT_CLIP_TYPE">
-           <tp:docstring>
-        Determines whether text which intersects the bounding box in the y direction
-        is included.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="a(iisv)" tp:type="RangeList"/>
-  </method>
-  <method name="getAttributeRun">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Query a particular text object for the text attributes defined at a given offset, 
-        obtaining the start and end of the "attribute run" over which these attributes are currently 
-        invariant.  Text attributes are those presentational, typographic, or semantic attributes or 
-        qualitites which apply to a range of text specifyable by starting and ending offsets.  
-        Attributes relevant to localization should be provided in 
-        accordance with the w3c "Internationalization and Localization Markup Requirements", 
-        http://www.w3.org/TR/2005/WD-itsreq-20051122/
-        Other text attributes should choose their names and value semantics in accordance with relevant
-        standards such as CSS level 2 (http://www.w3.org/TR/1998/REC-CSS2-19980512), 
-        XHTML 1.0 (http://www.w3.org/TR/2002/REC-xhtml1-20020801), and
-        WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).  Those attributes from the aforementioned
-        specifications and recommendations which do not concern typographic, presentational, or 
-        semantic aspects of text should be exposed via the more general Accessible::getAttributes() API
-        (if at all).</p>
-
-      <p>For example, CSS attributes which should be exposed on text (either as default attributes, or 
-        as explicitly-set attributes when non-default values are specified in the content view) include
-        the Font attributes (i.e. "css2:font-weight", "css2:font-style"), 
-        the "css2:color" and "css2:background-color" attributes, and "css2:text-decoration" attribute.     </p>
-
-      <p>If includeDefaults is <code>True</code>, then this AttributeSet should include the default
-        attributes as well as those which are explicitly assigned to the attribute run in question.
-        startOffset and endOffset will be back-filled to indicate the start and end of the attribute run
-        which contains 'offset' - an attribute run is a contiguous section of text whose attributes are
-        homogeneous.   </p>
-
-      <p>Clients seeking annotations or properties of a more general nature, which 
-        are not specific to the onscreen textual content of objects and cannot logically be applied
-        to specific character offset ranges,
-        should use Accessible.getAttributes instead.
-        The attributes returned by Text.getAttributeRun (with or without 'default attributes'), 
-        are distinct from the properties/attributes returned by Accessible.getAttributes.    </p>
-    </tp:docstring>
-    <arg direction="in" name="offset" type="i">
-           <tp:docstring>
-        The offset of the character whose attributes will be reported.
-           </tp:docstring>
-    </arg>
-    <arg direction="in" name="includeDefaults" type="b" tp:type="boolean">
-           <tp:docstring>
-        If False, 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. See also Text.getDefaultAttributes. 
-           </tp:docstring>
-    </arg>
-    <arg direction="out" type="{ss}" tp:type="AttributeSet">
-    <tp:docstring>
-      The AttributeSet defined at offset, optionally including the 'default' attributes.
-    </tp:docstring>
-    </arg>
-    <arg direction="out" name="startOffset" type="i">
-           <tp:docstring>
-        Backfilled with the starting offset of the character range over which all
-       text attributes match those of <code>offset</code>, i.e. the start of the homogeneous
-       attribute run including <code>offset</code>.
-           </tp:docstring>
-    </arg>
-    <arg direction="out" name="endOffset" type="i">
-           <tp:docstring>
-        Backfilled with the offset of the first character past the character range over which all
-       text attributes match those of <code>offset</code>, i.e. the character immediately after 
-        the homogeneous attribute run including <code>offset</code>.
-           </tp:docstring>
-    </arg>
-  </method>
-  <method name="getDefaultAttributeSet">
-    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Return an AttributeSet containing the text attributes which apply to all text in the object
-        by virtue of the default settings of the document, view, or user agent; e.g. those
-        attributes which are implied rather than explicitly applied to the text object.
-        For instance, an object whose entire text content has been explicitly marked as 'bold' will
-        report the 'bold' attribute via getAttributeRun(), whereas an object whose text weight is
-        inspecified may report the default or implied text weight in the default AttributeSet.    </p>
-    </tp:docstring>
-    <arg direction="out" type="as" tp:type="AttributeSet"/>
-  </method>
-</interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Tree.xml b/xml/org.freedesktop.atspi.Tree.xml
deleted file mode 100644 (file)
index 6a2e6fb..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-       <tp:struct name="AccessibleProxy" array-name="AccessibleProxyArray">
-               <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                       <p>The wire structure of an Accessible object proxy</p>
-               </tp:docstring>
-       
-               <tp:member type="o" tp:name="path">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>D-Bus path of the object.</p>
-                       </tp:docstring>
-               </tp:member>
-       
-               <tp:member type="o" tp:name="parent">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>D-Bus path of the parent accessible.</p>
-                       </tp:docstring>
-               </tp:member>
-               
-               <tp:member type="ao" tp:name="children">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Array of all the child accessibles.</p>
-                       </tp:docstring>
-               </tp:member>
-       
-               <tp:member type="as" tp:name="interfaces">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Names of all the interfaces this accessible object supports.</p>
-                       </tp:docstring>
-               </tp:member>
-       
-               <tp:member type="s" tp:name="name">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Names of the object.</p>
-                       </tp:docstring>
-               </tp:member>
-       
-               <tp:member type="u" tp:name="role">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Accessible role of object.</p>
-                       </tp:docstring>
-               </tp:member>
-       
-               <tp:member type="s" tp:name="description">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Extended description of the object.</p>
-                       </tp:docstring>
-               </tp:member>
-
-               <tp:member type="au" tp:name="states">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>The object's states.  Each integer contains a bitmask of 32 states (the first item contains states 0-31, and the second item contains states 32-63).</p>
-                       </tp:docstring>
-               </tp:member>
-       </tp:struct>
-
-       <interface name="org.freedesktop.atspi.Tree">
-               <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                       <p>The Tree interface provides access to all
-                       of the Accessible objects that an application
-                       has available. Information about the objects is 
-                       transferred as a collection to reduce IPC usage.</p>
-               </tp:docstring>
-
-               <method name="getRoot">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Gets the D-Bus object path of the 
-                               root accessible object of the application.</p>
-                       </tp:docstring>
-                       <arg name="root" type="o" direction="out">
-                               <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                                       <p>Path of root Accessible object.</p>
-                               </tp:docstring>
-                       </arg>
-               </method>
-
-               <method name="getTree">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Transfers structures representing ALL
-                               Accessible objects that currently exist in the
-                               application. This should be used to create
-                               a mirror of the tree of Accessibles within the AT.</p>
-                       </tp:docstring>
-                       <arg name="nodes" type="a(ooaoassusau)" direction="out" tp:type="AccessibleProxy[]">
-                               <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                                       <p>Array of Accessible Object proxy structures.</p>
-                               </tp:docstring>
-                       </arg>
-               </method>
-
-               <signal name="updateAccessible">
-                       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                               <p>Updates all mirrors. Re-sends all all the 
-                               accessible objects that have changed since the last
-                               updateTree signal was send</p>
-                       </tp:docstring>
-                       <arg name="nodesAdded" type="(ooaoassusau)" tp:type="AccessibleProxy[]">
-                               <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                                       <p>Array of Accessible Object proxy structures to be added.</p>
-                               </tp:docstring>
-                       </arg>
-               </signal>
-
-               <signal name="removeAccessible">
-                       <arg name="nodeRemoved" type="o">
-                               <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-                                       <p>Accessible Object proxy structure to be removed.</p>
-                               </tp:docstring>
-                       </arg>
-               </signal>
-       </interface>
-</node>
diff --git a/xml/org.freedesktop.atspi.Value.xml b/xml/org.freedesktop.atspi.Value.xml
deleted file mode 100644 (file)
index 8c7d2ac..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-<interface name="org.freedesktop.atspi.Value">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>An interface supporting controls which allow a
-      one-dimensional, scalar quantity to be modified or which
-      reflect a scalar quantity. (If STATE_EDITABLE is not present, 
-      the valuator is treated as "read only".  </p>
-
-    <p>Events generated by Image instances include:
-      'object:value-changed'</p>
-  </tp:docstring>
-  <tp:property name="minimumValue" type="d" access="read">
-  <tp:docstring>
-    The minimum value allowed by this valuator.
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="maximumValue" type="d" access="read">
-  <tp:docstring>
-    The maximum value allowed by this valuator.
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="minimumIncrement" type="d" access="read">
-  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>The smallest incremental change which this valuator allows.
-      If 0, the incremental changes to the valuator are 
-      limited only by the precision of a double precision value
-      on the platform.</p>
-  </tp:docstring>
-  </tp:property>
-  <tp:property name="currentValue" type="d" access="readwrite">
-  <tp:docstring>
-    The current value of the valuator.
-  </tp:docstring>
-  </tp:property>
-</interface>
-</node>