2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001, 2002 Sun Microsystems Inc.,
6 * Copyright 2001, 2002 Ximian, Inc.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
27 #include <cspi/spi-impl.h>
29 * Definitions for AccessibleRole, AccessibleState,
30 * and event listeners.
32 #include <cspi/spi-roletypes.h>
33 #include <cspi/spi-statetypes.h>
34 #include <cspi/spi-listener.h>
37 * Auxiliary typedefs and mask definitions
39 #include <libspi/keymasks.h>
46 * Enumerated type for text boundary types
50 SPI_TEXT_BOUNDARY_CHAR,
51 SPI_TEXT_BOUNDARY_CURSOR_POS,
52 SPI_TEXT_BOUNDARY_WORD_START,
53 SPI_TEXT_BOUNDARY_WORD_END,
54 SPI_TEXT_BOUNDARY_SENTENCE_START,
55 SPI_TEXT_BOUNDARY_SENTENCE_END,
56 SPI_TEXT_BOUNDARY_LINE_START,
57 SPI_TEXT_BOUNDARY_LINE_END,
58 SPI_TEXT_BOUNDARY_ATTRIBUTE_RANGE
59 } AccessibleTextBoundaryType;
62 * Enumerated type for text bounds clipping types
70 } AccessibleTextClipType;
74 * Enumerated type for relation types
81 SPI_RELATION_LABEL_FOR,
82 SPI_RELATION_LABELED_BY,
83 SPI_RELATION_CONTROLLER_FOR,
84 SPI_RELATION_CONTROLLED_BY,
85 SPI_RELATION_MEMBER_OF,
86 SPI_RELATION_NODE_CHILD_OF,
87 SPI_RELATION_EXTENDED,
88 SPI_RELATION_FLOWS_TO,
89 SPI_RELATION_FLOWS_FROM,
90 SPI_RELATION_SUBWINDOW_OF,
92 SPI_RELATION_EMBEDDED_BY,
93 SPI_RELATION_LAST_DEFINED
94 } AccessibleRelationType;
97 /* don't change the order of these ! */
99 SPI_COORD_TYPE_SCREEN,
100 SPI_COORD_TYPE_WINDOW
101 } AccessibleCoordType;
106 SPI_KEY_PRESSRELEASE,
109 } AccessibleKeySynthType;
112 SPI_KEYLISTENER_NOSYNC = 0,
113 SPI_KEYLISTENER_SYNCHRONOUS = 1,
114 SPI_KEYLISTENER_CANCONSUME = 2,
115 SPI_KEYLISTENER_ALL_WINDOWS = 4
116 } AccessibleKeyListenerSyncType;
118 typedef unsigned long AccessibleKeyEventMask;
119 typedef unsigned long AccessibleDeviceEventMask;
122 * AccessibleComponentLayer:
123 * @SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
124 * @SPI_LAYER_BACKGROUND: Component belongs to the destop background.
125 * @SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
126 * @SPI_LAYER_WIDGET: Component is a 'normal' widget.
127 * @SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
128 * Z-information relative to other MDI-layer components.
129 * @SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
131 * @SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
133 * @SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
134 * relative to other window-layer components.
135 * @SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
136 * should not be encountered.
140 SPI_LAYER_BACKGROUND,
147 SPI_LAYER_LAST_DEFINED
148 } AccessibleComponentLayer;
152 * AccessibleTextRange:
153 * @start: the first nominal character position within the range.
154 * @end: the first nominal character position following the range.
155 * @content: The actual text content between @start and @end, as a UTF-8 string.
157 * Structure which encapsulates a text range - must be associated with an
158 * AccessibleText-implementing object.
160 typedef struct _AccessibleTextRange
165 } AccessibleTextRange;
173 * Structure containing identifying information about a set of keycode or
176 typedef struct _AccessibleKeySet
178 unsigned long *keysyms;
179 unsigned short *keycodes;
185 * SPI_KEYSET_ALL_KEYS:
186 * @SPI_KEYSET_ALL_KEYS: A special value for an AccessibleKeySet type, which tacitly
187 * includes all keycodes and keyvals for the specified modifier set.
189 #define SPI_KEYSET_ALL_KEYS NULL
191 typedef unsigned long AccessibleModifierMaskType;
192 typedef AccessibleModifierMaskType AccessibleKeyMaskType;
194 /* Basic SPI initialization and event loop function prototypes */
197 void SPI_event_main (void);
198 void SPI_event_quit (void);
199 SPIBoolean SPI_eventIsReady (void);
200 AccessibleEvent *SPI_nextEvent (SPIBoolean waitForEvent);
203 /* Event Listener creation and support. */
205 void SPI_freeAccessibleKeySet (
206 AccessibleKeySet *keyset);
207 AccessibleKeySet * SPI_createAccessibleKeySet (
211 const char **keystrings);
212 AccessibleEventListener * SPI_createAccessibleEventListener (
213 AccessibleEventListenerCB callback,
215 SPIBoolean AccessibleEventListener_addCallback (
216 AccessibleEventListener *listener,
217 AccessibleEventListenerCB callback,
219 SPIBoolean AccessibleEventListener_removeCallback (
220 AccessibleEventListener *listener,
221 AccessibleEventListenerCB callback);
222 void AccessibleEventListener_unref (
223 AccessibleEventListener *listener);
225 /* Device Event Listener creation and support. */
227 /* First four are deprecated in favor of the last four; really just a re-name */
229 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
230 AccessibleKeystrokeListenerCB callback,
232 SPIBoolean AccessibleKeystrokeListener_addCallback (
233 AccessibleKeystrokeListener *listener,
234 AccessibleKeystrokeListenerCB callback,
236 SPIBoolean AccessibleKeystrokeListener_removeCallback (
237 AccessibleKeystrokeListener *listener,
238 AccessibleKeystrokeListenerCB callback);
239 void AccessibleKeystrokeListener_unref (
240 AccessibleKeystrokeListener *listener);
242 AccessibleDeviceListener * SPI_createAccessibleDeviceListener (
243 AccessibleDeviceListenerCB callback,
245 SPIBoolean AccessibleDeviceListener_addCallback (
246 AccessibleDeviceListener *listener,
247 AccessibleDeviceListenerCB callback,
249 SPIBoolean AccessibleDeviceListener_removeCallback (
250 AccessibleDeviceListener *listener,
251 AccessibleDeviceListenerCB callback);
252 void AccessibleDeviceListener_unref (
253 AccessibleDeviceListener *listener);
255 /* Global functions serviced by the registry */
257 SPIBoolean SPI_registerGlobalEventListener (
258 AccessibleEventListener *listener,
259 const char *eventType);
260 SPIBoolean SPI_deregisterGlobalEventListener (
261 AccessibleEventListener *listener,
262 const char *eventType);
263 SPIBoolean SPI_deregisterGlobalEventListenerAll (
264 AccessibleEventListener *listener);
265 SPIBoolean SPI_registerAccessibleKeystrokeListener (
266 AccessibleKeystrokeListener *listener,
267 AccessibleKeySet *keys,
268 AccessibleKeyMaskType modmask,
269 AccessibleKeyEventMask eventmask,
270 AccessibleKeyListenerSyncType sync_type);
271 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
272 AccessibleKeystrokeListener *listener,
273 AccessibleKeyMaskType modmask);
275 SPIBoolean SPI_registerDeviceEventListener (
276 AccessibleDeviceListener *listener,
277 AccessibleDeviceEventMask eventmask,
279 SPIBoolean SPI_deregisterDeviceEventListener (
280 AccessibleDeviceListener *listener,
283 int SPI_getDesktopCount (void);
284 Accessible *SPI_getDesktop (int i);
285 int SPI_getDesktopList (Accessible ***desktop_list);
286 void SPI_freeDesktopList (Accessible **desktop_list);
288 SPIBoolean SPI_generateKeyboardEvent (long int keyval,
290 AccessibleKeySynthType synth_type);
292 SPIBoolean SPI_generateMouseEvent (long int x, long int y, char *name);
294 /* Accessible function prototypes */
296 void Accessible_ref (Accessible *obj);
297 void Accessible_unref (Accessible *obj);
298 char * Accessible_getName (Accessible *obj);
299 char * Accessible_getDescription (Accessible *obj);
300 Accessible * Accessible_getParent (Accessible *obj);
301 long Accessible_getChildCount (Accessible *obj);
302 Accessible * Accessible_getChildAtIndex (Accessible *obj,
303 long int childIndex);
304 long Accessible_getIndexInParent (Accessible *obj);
305 AccessibleRelation **Accessible_getRelationSet (Accessible *obj);
306 AccessibleRole Accessible_getRole (Accessible *obj);
307 char * Accessible_getRoleName (Accessible *obj);
308 AccessibleStateSet * Accessible_getStateSet (Accessible *obj);
310 /* Interface query methods */
312 SPIBoolean Accessible_isAction (Accessible *obj);
313 SPIBoolean Accessible_isApplication (Accessible *obj);
314 SPIBoolean Accessible_isComponent (Accessible *obj);
315 SPIBoolean Accessible_isEditableText (Accessible *obj);
316 SPIBoolean Accessible_isHypertext (Accessible *obj);
317 SPIBoolean Accessible_isImage (Accessible *obj);
318 SPIBoolean Accessible_isSelection (Accessible *obj);
319 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
320 SPIBoolean Accessible_isTable (Accessible *obj);
321 SPIBoolean Accessible_isText (Accessible *obj);
322 SPIBoolean Accessible_isValue (Accessible *obj);
324 AccessibleAction * Accessible_getAction (Accessible *obj);
325 AccessibleApplication * Accessible_getApplication (Accessible *obj);
326 AccessibleComponent * Accessible_getComponent (Accessible *obj);
327 AccessibleEditableText * Accessible_getEditableText (Accessible *obj);
328 AccessibleHypertext * Accessible_getHypertext (Accessible *obj);
329 AccessibleImage * Accessible_getImage (Accessible *obj);
330 AccessibleSelection * Accessible_getSelection (Accessible *obj);
331 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
332 AccessibleTable * Accessible_getTable (Accessible *obj);
333 AccessibleText * Accessible_getText (Accessible *obj);
334 AccessibleValue * Accessible_getValue (Accessible *obj);
335 AccessibleUnknown * Accessible_queryInterface (Accessible *obj,
336 const char *interface_name);
338 /* AccessibleAction function prototypes */
340 void AccessibleAction_ref (AccessibleAction *obj);
341 void AccessibleAction_unref (AccessibleAction *obj);
342 long AccessibleAction_getNActions (AccessibleAction *obj);
343 char *AccessibleAction_getName (AccessibleAction *obj,
345 char *AccessibleAction_getDescription (AccessibleAction *obj,
347 SPIBoolean AccessibleAction_doAction (AccessibleAction *obj,
349 char *AccessibleAction_getKeyBinding (AccessibleAction *obj,
352 /* AccessibleApplication function prototypes */
354 void AccessibleApplication_ref (AccessibleApplication *obj);
355 void AccessibleApplication_unref (AccessibleApplication *obj);
356 char *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
357 char *AccessibleApplication_getVersion (AccessibleApplication *obj);
358 long AccessibleApplication_getID (AccessibleApplication *obj);
359 SPIBoolean AccessibleApplication_pause (AccessibleApplication *obj);
360 SPIBoolean AccessibleApplication_resume (AccessibleApplication *obj);
362 /* AccessibleComponent function prototypes */
364 void AccessibleComponent_ref (AccessibleComponent *obj);
365 void AccessibleComponent_unref (AccessibleComponent *obj);
366 SPIBoolean AccessibleComponent_contains (AccessibleComponent *obj,
369 AccessibleCoordType ctype);
370 Accessible *AccessibleComponent_getAccessibleAtPoint (
371 AccessibleComponent *obj,
374 AccessibleCoordType ctype);
375 void AccessibleComponent_getExtents (AccessibleComponent *obj,
380 AccessibleCoordType ctype);
381 void AccessibleComponent_getPosition (AccessibleComponent *obj,
384 AccessibleCoordType ctype);
385 void AccessibleComponent_getSize (AccessibleComponent *obj,
388 AccessibleComponentLayer
389 AccessibleComponent_getLayer (AccessibleComponent *obj);
390 SPIBoolean AccessibleComponent_grabFocus (AccessibleComponent *obj);
391 short AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
393 /* AccessibleEditableText function prototypes */
396 AccessibleEditableText_ref (AccessibleEditableText *obj);
399 AccessibleEditableText_unref (AccessibleEditableText *obj);
402 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
403 const char *attributes,
404 long int startOffset,
408 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
409 const char *newContents);
412 AccessibleEditableText_insertText (AccessibleEditableText *obj,
418 AccessibleEditableText_copyText (AccessibleText *obj,
423 AccessibleEditableText_cutText (AccessibleEditableText *obj,
428 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
433 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
438 * AccessibleHyperlink function prototypes
442 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
444 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
447 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
450 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
454 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
458 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
459 long int *startIndex,
463 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
467 * AccessibleHypertext function prototypes
472 AccessibleHypertext_ref (AccessibleHypertext *obj);
475 AccessibleHypertext_unref (AccessibleHypertext *obj);
478 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
480 AccessibleHyperlink *
481 AccessibleHypertext_getLink (AccessibleHypertext *obj,
485 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
486 long int characterOffset);
490 * AccessibleImage function prototypes
495 AccessibleImage_ref (AccessibleImage *obj);
498 AccessibleImage_unref (AccessibleImage *obj);
501 AccessibleImage_getImageDescription (AccessibleImage *obj);
504 AccessibleImage_getImageSize (AccessibleImage *obj,
509 AccessibleImage_getImagePosition (AccessibleImage *obj,
512 AccessibleCoordType ctype);
515 AccessibleImage_getImageExtents (AccessibleImage *obj,
520 AccessibleCoordType ctype);
523 * AccessibleRelation function prototypes
527 void AccessibleRelation_ref (AccessibleRelation *obj);
528 void AccessibleRelation_unref (AccessibleRelation *obj);
530 AccessibleRelationType
531 AccessibleRelation_getRelationType (AccessibleRelation *obj);
534 AccessibleRelation_getNTargets (AccessibleRelation *obj);
537 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
542 * AccessibleSelection function prototypes
546 void AccessibleSelection_ref (AccessibleSelection *obj);
547 void AccessibleSelection_unref (AccessibleSelection *obj);
550 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
553 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
554 long int selectedChildIndex);
557 AccessibleSelection_selectChild (AccessibleSelection *obj,
558 long int childIndex);
561 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
562 long int selectedChildIndex);
565 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
566 long int childIndex);
569 AccessibleSelection_selectAll (AccessibleSelection *obj);
572 AccessibleSelection_clearSelection (AccessibleSelection *obj);
577 * AccessibleStateSet function prototypes
581 void AccessibleStateSet_ref (AccessibleStateSet *obj);
582 void AccessibleStateSet_unref (AccessibleStateSet *obj);
585 AccessibleStateSet_contains (AccessibleStateSet *obj,
586 AccessibleState state);
589 AccessibleStateSet_add (AccessibleStateSet *obj,
590 AccessibleState state);
593 AccessibleStateSet_remove (AccessibleStateSet *obj,
594 AccessibleState state);
597 AccessibleStateSet_equals (AccessibleStateSet *obj,
598 AccessibleStateSet *obj2);
601 AccessibleStateSet_compare (AccessibleStateSet *obj,
602 AccessibleStateSet *obj2);
605 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
608 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
610 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
612 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
614 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
615 const char *content_type);
617 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
619 unsigned int seek_type);
621 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
624 unsigned int read_type);
627 * AccessibleTable function prototypes
631 void AccessibleTable_ref (AccessibleTable *obj);
632 void AccessibleTable_unref (AccessibleTable *obj);
635 AccessibleTable_getCaption (AccessibleTable *obj);
638 AccessibleTable_getSummary (AccessibleTable *obj);
641 AccessibleTable_getNRows (AccessibleTable *obj);
644 AccessibleTable_getNColumns (AccessibleTable *obj);
647 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
652 AccessibleTable_getIndexAt (AccessibleTable *obj,
657 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
661 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
665 AccessibleTable_getRowDescription (AccessibleTable *obj,
669 AccessibleTable_getColumnDescription (AccessibleTable *obj,
673 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
678 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
683 AccessibleTable_getRowHeader (AccessibleTable *obj,
687 AccessibleTable_getColumnHeader (AccessibleTable *obj,
691 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
694 AccessibleTable_getSelectedRows (AccessibleTable *obj,
695 long int **selectedRows);
698 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
701 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
702 long int **selectedColumns);
705 AccessibleTable_isRowSelected (AccessibleTable *obj,
709 AccessibleTable_isColumnSelected (AccessibleTable *obj,
713 AccessibleTable_isSelected (AccessibleTable *obj,
719 * AccessibleText function prototypes
723 void AccessibleText_ref (AccessibleText *obj);
724 void AccessibleText_unref (AccessibleText *obj);
727 AccessibleText_getCharacterCount (AccessibleText *obj);
730 AccessibleText_getText (AccessibleText *obj,
731 long int startOffset,
735 AccessibleText_getCaretOffset (AccessibleText *obj);
738 AccessibleText_getAttributes (AccessibleText *obj,
740 long int *startOffset,
741 long int *endOffset);
745 AccessibleText_setCaretOffset (AccessibleText *obj,
749 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
751 AccessibleTextBoundaryType type,
752 long int *startOffset,
753 long int *endOffset);
756 AccessibleText_getTextAtOffset (AccessibleText *obj,
758 AccessibleTextBoundaryType type,
759 long int *startOffset,
760 long int *endOffset);
763 AccessibleText_getTextAfterOffset (AccessibleText *obj,
765 AccessibleTextBoundaryType type,
766 long int *startOffset,
767 long int *endOffset);
770 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
774 AccessibleText_getCharacterExtents (AccessibleText *obj,
780 AccessibleCoordType type);
783 AccessibleText_getRangeExtents (AccessibleText *obj,
784 long int startOffset,
790 AccessibleCoordType type);
792 AccessibleTextRange **
793 AccessibleText_getBoundedRanges (AccessibleText *obj,
798 AccessibleCoordType type,
799 AccessibleTextClipType clipTypeX,
800 AccessibleTextClipType clipTypeY);
803 AccessibleTextRange_freeRanges (AccessibleTextRange **ranges);
806 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
809 AccessibleCoordType type);
812 AccessibleText_getNSelections (AccessibleText *obj);
815 AccessibleText_getSelection (AccessibleText *obj,
816 long int selectionNum,
817 long int *startOffset,
818 long int *endOffset);
822 AccessibleText_addSelection (AccessibleText *obj,
823 long int startOffset,
827 AccessibleText_removeSelection (AccessibleText *obj,
828 long int selectionNum);
831 AccessibleText_setSelection (AccessibleText *obj,
832 long int selectionNum,
833 long int startOffset,
836 /* AccessibleValue Function Prototypes: */
838 void AccessibleValue_ref (AccessibleValue *obj);
839 void AccessibleValue_unref (AccessibleValue *obj);
840 double AccessibleValue_getMinimumValue (AccessibleValue *obj);
841 double AccessibleValue_getCurrentValue (AccessibleValue *obj);
842 double AccessibleValue_getMaximumValue (AccessibleValue *obj);
843 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
846 /* Persistance and lifecycle control for AccessibleEvents. */
847 SPIBoolean AccessibleEvent_ref (const AccessibleEvent *e);
848 void AccessibleEvent_unref (const AccessibleEvent *e);
851 * Prototypes for accessor functions, to obtain context
852 * information for accessible events.
855 char* AccessibleTextChangedEvent_getChangeString (const AccessibleEvent *e);
856 Accessible * AccessibleChildChangedEvent_getChildAccessible (const AccessibleEvent *e);
858 Accessible * AccessibleParentChangedEvent_getParentAccessible (const AccessibleEvent *e);
860 char* AccessibleTextSelectionChangedEvent_getSelectionString (const AccessibleEvent *e);
862 char* AccessibleWindowEvent_getTitleString (const AccessibleEvent *e);
864 Accessible * AccessibleActiveDescendantChangedEvent_getActiveDescendant (const AccessibleEvent *e);
866 Accessible * AccessibleTableSummaryChangedEvent_getSummaryAccessible (const AccessibleEvent *e);
868 Accessible * AccessibleTableHeaderChangedEvent_getHeaderAccessible (const AccessibleEvent *e);
870 char * AccessibleTableCaptionChangedEvent_getCaptionString (const AccessibleEvent *e);
872 char * AccessibleTableRowDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
874 char * AccessibleTableColumnDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
876 char * AccessibleDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
878 char * AccessibleNameChangedEvent_getNameString (const AccessibleEvent *e);
881 void SPI_freeString (char *s);