1 #include <stdlib.h> /* for malloc */
2 #include <cspi/spi-private.h>
4 static const char *role_names [] =
62 "table column header",
77 #define MAX_ROLES (sizeof (role_names) / sizeof (char *))
80 cspi_init_role_table (AccessibleRole *role_table)
83 for (i = 0; i < Accessibility_ROLE_LAST_DEFINED; ++i)
85 role_table [i] = SPI_ROLE_UNKNOWN;
87 role_table [Accessibility_ROLE_INVALID] = SPI_ROLE_INVALID;
88 role_table [Accessibility_ROLE_ACCELERATOR_LABEL] = SPI_ROLE_ACCEL_LABEL;
89 role_table [Accessibility_ROLE_ALERT] = SPI_ROLE_ALERT;
90 role_table [Accessibility_ROLE_ANIMATION] = SPI_ROLE_ANIMATION;
91 role_table [Accessibility_ROLE_ARROW] = SPI_ROLE_ARROW;
92 role_table [Accessibility_ROLE_CALENDAR] = SPI_ROLE_CALENDAR;
93 role_table [Accessibility_ROLE_CANVAS] = SPI_ROLE_CANVAS;
94 role_table [Accessibility_ROLE_CHECK_BOX] = SPI_ROLE_CHECK_BOX;
95 role_table [Accessibility_ROLE_CHECK_MENU_ITEM] = SPI_ROLE_CHECK_MENU_ITEM;
96 role_table [Accessibility_ROLE_COLOR_CHOOSER] = SPI_ROLE_COLOR_CHOOSER;
97 role_table [Accessibility_ROLE_COLUMN_HEADER] = SPI_ROLE_COLUMN_HEADER;
98 role_table [Accessibility_ROLE_COMBO_BOX] = SPI_ROLE_COMBO_BOX;
99 role_table [Accessibility_ROLE_DATE_EDITOR] = SPI_ROLE_DATE_EDITOR;
100 role_table [Accessibility_ROLE_DESKTOP_ICON] = SPI_ROLE_DESKTOP_ICON;
101 role_table [Accessibility_ROLE_DESKTOP_FRAME] = SPI_ROLE_DESKTOP_FRAME;
102 role_table [Accessibility_ROLE_DIAL] = SPI_ROLE_DIAL;
103 role_table [Accessibility_ROLE_DIALOG] = SPI_ROLE_DIALOG;
104 role_table [Accessibility_ROLE_DIRECTORY_PANE] = SPI_ROLE_DIRECTORY_PANE;
105 role_table [Accessibility_ROLE_FILE_CHOOSER] = SPI_ROLE_FILE_CHOOSER;
106 role_table [Accessibility_ROLE_FILLER] = SPI_ROLE_FILLER;
107 role_table [Accessibility_ROLE_FONT_CHOOSER] = SPI_ROLE_FONT_CHOOSER;
108 role_table [Accessibility_ROLE_FRAME] = SPI_ROLE_FRAME;
109 role_table [Accessibility_ROLE_GLASS_PANE] = SPI_ROLE_GLASS_PANE;
110 role_table [Accessibility_ROLE_HTML_CONTAINER] = SPI_ROLE_HTML_CONTAINER;
111 role_table [Accessibility_ROLE_ICON] = SPI_ROLE_ICON;
112 role_table [Accessibility_ROLE_IMAGE] = SPI_ROLE_IMAGE;
113 role_table [Accessibility_ROLE_INTERNAL_FRAME] = SPI_ROLE_INTERNAL_FRAME;
114 role_table [Accessibility_ROLE_LABEL] = SPI_ROLE_LABEL;
115 role_table [Accessibility_ROLE_LAYERED_PANE] = SPI_ROLE_LAYERED_PANE;
116 role_table [Accessibility_ROLE_LIST] = SPI_ROLE_LIST;
117 role_table [Accessibility_ROLE_LIST_ITEM] = SPI_ROLE_LIST_ITEM;
118 role_table [Accessibility_ROLE_MENU] = SPI_ROLE_MENU;
119 role_table [Accessibility_ROLE_MENU_BAR] = SPI_ROLE_MENU_BAR;
120 role_table [Accessibility_ROLE_MENU_ITEM] = SPI_ROLE_MENU_ITEM;
121 role_table [Accessibility_ROLE_OPTION_PANE] = SPI_ROLE_OPTION_PANE;
122 role_table [Accessibility_ROLE_PAGE_TAB] = SPI_ROLE_PAGE_TAB;
123 role_table [Accessibility_ROLE_PAGE_TAB_LIST] = SPI_ROLE_PAGE_TAB_LIST;
124 role_table [Accessibility_ROLE_PANEL] = SPI_ROLE_PANEL;
125 role_table [Accessibility_ROLE_PASSWORD_TEXT] = SPI_ROLE_PASSWORD_TEXT;
126 role_table [Accessibility_ROLE_POPUP_MENU] = SPI_ROLE_POPUP_MENU;
127 role_table [Accessibility_ROLE_PROGRESS_BAR] = SPI_ROLE_PROGRESS_BAR;
128 role_table [Accessibility_ROLE_PUSH_BUTTON] = SPI_ROLE_PUSH_BUTTON;
129 role_table [Accessibility_ROLE_RADIO_BUTTON] = SPI_ROLE_RADIO_BUTTON;
130 role_table [Accessibility_ROLE_RADIO_MENU_ITEM] = SPI_ROLE_RADIO_MENU_ITEM;
131 role_table [Accessibility_ROLE_ROOT_PANE] = SPI_ROLE_ROOT_PANE;
132 role_table [Accessibility_ROLE_ROW_HEADER] = SPI_ROLE_ROW_HEADER;
133 role_table [Accessibility_ROLE_SCROLL_BAR] = SPI_ROLE_SCROLL_BAR;
134 role_table [Accessibility_ROLE_SCROLL_PANE] = SPI_ROLE_SCROLL_PANE;
135 role_table [Accessibility_ROLE_SEPARATOR] = SPI_ROLE_SEPARATOR;
136 role_table [Accessibility_ROLE_SLIDER] = SPI_ROLE_SLIDER;
137 role_table [Accessibility_ROLE_SPIN_BUTTON] = SPI_ROLE_SPIN_BUTTON;
138 role_table [Accessibility_ROLE_SPLIT_PANE] = SPI_ROLE_SPLIT_PANE;
139 role_table [Accessibility_ROLE_STATUS_BAR] = SPI_ROLE_STATUS_BAR;
140 role_table [Accessibility_ROLE_TABLE] = SPI_ROLE_TABLE;
141 role_table [Accessibility_ROLE_TABLE_CELL] = SPI_ROLE_TABLE_CELL;
142 role_table [Accessibility_ROLE_TEAROFF_MENU_ITEM] = SPI_ROLE_TEAROFF_MENU_ITEM;
143 role_table [Accessibility_ROLE_TEXT] = SPI_ROLE_TEXT;
144 role_table [Accessibility_ROLE_TOGGLE_BUTTON] = SPI_ROLE_TOGGLE_BUTTON;
145 role_table [Accessibility_ROLE_TOOL_BAR] = SPI_ROLE_TOOL_BAR;
146 role_table [Accessibility_ROLE_TOOL_TIP] = SPI_ROLE_TOOL_TIP;
147 role_table [Accessibility_ROLE_TREE] = SPI_ROLE_TREE;
148 role_table [Accessibility_ROLE_TREE_TABLE] = SPI_ROLE_TREE_TABLE;
149 role_table [Accessibility_ROLE_UNKNOWN] = SPI_ROLE_UNKNOWN;
150 role_table [Accessibility_ROLE_VIEWPORT] = SPI_ROLE_VIEWPORT;
151 role_table [Accessibility_ROLE_WINDOW] = SPI_ROLE_WINDOW;
152 role_table [Accessibility_ROLE_EXTENDED] = SPI_ROLE_EXTENDED;
153 role_table [Accessibility_ROLE_LAST_DEFINED] = SPI_ROLE_EXTENDED;
158 static AccessibleRole
159 cspi_role_from_spi_role (Accessibility_Role role)
161 /* array is sized according to IDL roles because IDL roles are the index */
162 static AccessibleRole cspi_role_table [Accessibility_ROLE_LAST_DEFINED];
163 static SPIBoolean is_initialized = FALSE;
164 AccessibleRole cspi_role;
167 is_initialized = cspi_init_role_table (cspi_role_table);
169 if (role >= 0 && role < Accessibility_ROLE_LAST_DEFINED)
171 cspi_role = cspi_role_table [role];
175 cspi_role = SPI_ROLE_EXTENDED;
181 * AccessibleRole_getName:
182 * @role: an #AccessibleRole object to query.
184 * Get a localizeable string that indicates the name of an #AccessibleRole.
185 * <em>DEPRECATED.</em>
187 * Returns: a localizable string name for an #AccessibleRole enumerated type.
190 AccessibleRole_getName (AccessibleRole role)
192 if (role < MAX_ROLES)
194 return g_strdup (role_names [(int) role]);
198 return g_strdup ("");
204 * @obj: a pointer to the #Accessible object on which to operate.
206 * Increment the reference count for an #Accessible object.
209 Accessible_ref (Accessible *obj)
211 cspi_object_ref (obj);
216 * @obj: a pointer to the #Accessible object on which to operate.
218 * Decrement the reference count for an #Accessible object.
221 Accessible_unref (Accessible *obj)
223 cspi_object_unref (obj);
227 * Accessible_getName:
228 * @obj: a pointer to the #Accessible object on which to operate.
230 * Get the name of an #Accessible object.
232 * Returns: a UTF-8 string indicating the name of the #Accessible object.
233 * or NULL on exception
236 Accessible_getName (Accessible *obj)
240 cspi_return_val_if_fail (obj != NULL, NULL);
243 Accessibility_Accessible__get_name (CSPI_OBJREF (obj), cspi_ev ());
245 cspi_return_val_if_ev ("getName", NULL);
251 * Accessible_getDescription:
252 * @obj: a pointer to the #Accessible object on which to operate.
254 * Get the description of an #Accessible object.
256 * Returns: a UTF-8 string describing the #Accessible object.
257 * or NULL on exception
260 Accessible_getDescription (Accessible *obj)
264 cspi_return_val_if_fail (obj != NULL, NULL);
267 Accessibility_Accessible__get_description (CSPI_OBJREF (obj),
270 cspi_return_val_if_ev ("getDescription", NULL);
276 * Accessible_getParent:
277 * @obj: a pointer to the #Accessible object to query.
279 * Get an #Accessible object's parent container.
281 * Returns: a pointer tothe #Accessible object which contains the given
282 * #Accessible instance, or NULL if the @obj has no parent container.
286 Accessible_getParent (Accessible *obj)
290 cspi_return_val_if_fail (obj != NULL, NULL);
292 retval = cspi_object_add (
293 Accessibility_Accessible__get_parent (CSPI_OBJREF (obj),
296 cspi_return_val_if_ev ("getParent", NULL);
302 * Accessible_getChildCount:
303 * @obj: a pointer to the #Accessible object on which to operate.
305 * Get the number of children contained by an #Accessible object.
307 * Returns: a #long indicating the number of #Accessible children
308 * contained by an #Accessible object. or -1 on exception
312 Accessible_getChildCount (Accessible *obj)
316 cspi_return_val_if_fail (obj != NULL, -1);
319 Accessibility_Accessible__get_childCount (CSPI_OBJREF (obj),
322 cspi_return_val_if_ev ("getChildCount", -1);
328 * Accessible_getChildAtIndex:
329 * @obj: a pointer to the #Accessible object on which to operate.
330 * @childIndex: a #long indicating which child is specified.
332 * Get the #Accessible child of an #Accessible object at a given index.
334 * Returns: a pointer to the #Accessible child object at index
335 * @childIndex. or NULL on exception
338 Accessible_getChildAtIndex (Accessible *obj,
343 cspi_return_val_if_fail (obj != NULL, NULL);
345 retval = cspi_object_add (
346 Accessibility_Accessible_getChildAtIndex (CSPI_OBJREF (obj),
347 childIndex, cspi_ev ()));
353 * Accessible_getIndexInParent:
354 * @obj: a pointer to the #Accessible object on which to operate.
356 * Get the index of an #Accessible object in its containing #Accessible.
358 * Returns: a #long indicating the index of the #Accessible object
359 * in its parent (i.e. containing) #Accessible instance,
360 * or -1 if @obj has no containing parent or on exception.
363 Accessible_getIndexInParent (Accessible *obj)
367 cspi_return_val_if_fail (obj != NULL, -1);
370 Accessibility_Accessible_getIndexInParent (CSPI_OBJREF (obj), cspi_ev ());
372 cspi_return_val_if_ev ("getIndexInparent", -1);
377 * Accessible_getRelationSet:
378 * @obj: a pointer to the #Accessible object on which to operate.
380 * Get the set of #AccessibleRelation objects which describe this #Accessible object's
381 * relationships with other #Accessible objects.
383 * Returns: an array of #AccessibleRelation pointers. or NULL on exception
385 AccessibleRelation **
386 Accessible_getRelationSet (Accessible *obj)
390 AccessibleRelation **relations;
391 Accessibility_RelationSet *relation_set;
393 cspi_return_val_if_fail (obj != NULL, NULL);
396 Accessibility_Accessible_getRelationSet (CSPI_OBJREF (obj), cspi_ev ());
398 cspi_return_val_if_ev ("getRelationSet", NULL);
400 /* this looks hack-ish, but it's based on the CORBA C bindings spec */
401 n_relations = relation_set->_length;
402 relations = malloc (sizeof (AccessibleRelation *) * n_relations);
404 for (i = 0; i < n_relations; ++i)
406 relations[i] = cspi_object_add (CORBA_Object_duplicate (
407 relation_set->_buffer[i], cspi_ev ()));
409 relations[i] = CORBA_OBJECT_NIL;
411 CORBA_free (relation_set);
417 * Accessible_getRole:
418 * @obj: a pointer to the #Accessible object on which to operate.
420 * Get the UI role of an #Accessible object.
421 * A UTF-8 string describing this role can be obtained via Accessible_getRoleName ().
423 * Returns: the #AccessibleRole of the object.
427 Accessible_getRole (Accessible *obj)
429 AccessibleRole retval;
431 cspi_return_val_if_fail (obj != NULL, SPI_ROLE_INVALID);
434 Accessibility_Accessible_getRole (CSPI_OBJREF (obj), cspi_ev ());
436 cspi_return_val_if_ev ("getRole", SPI_ROLE_INVALID);
438 return cspi_role_from_spi_role (retval);
442 * Accessible_getRoleName:
443 * @obj: a pointer to the #Accessible object on which to operate.
445 * Get a UTF-8 string describing the role this object plays in the UI.
446 * This method will return useful values for roles that fall outside the
447 * enumeration used in Accessible_getRole ().
449 * Returns: a UTF-8 string specifying the role of this #Accessible object.
453 Accessible_getRoleName (Accessible *obj)
457 cspi_return_val_if_fail (obj != NULL, CORBA_string_dup ("invalid"));
460 Accessibility_Accessible_getRoleName (CSPI_OBJREF (obj), cspi_ev ());
462 cspi_return_val_if_ev ("getRoleName", CORBA_string_dup ("invalid"));
468 * Accessible_getStateSet:
469 * @obj: a pointer to the #Accessible object on which to operate.
471 * Not Yet Implemented.
473 * Returns: a pointer to an #AccessibleStateSet representing the object's current state.
476 Accessible_getStateSet (Accessible *obj)
481 /* Interface query methods */
484 * Accessible_isAction:
485 * @obj: a pointer to the #Accessible instance to query.
487 * Query whether the specified #Accessible implements #AccessibleAction.
489 * Returns: #TRUE if @obj implements the #AccessibleAction interface,
493 Accessible_isAction (Accessible *obj)
495 return cspi_accessible_is_a (obj,
496 "IDL:Accessibility/Action:1.0");
500 * Accessible_isApplication:
501 * @obj: a pointer to the #Accessible instance to query.
503 * Query whether the specified #Accessible implements #AccessibleApplication.
505 * Returns: #TRUE if @obj implements the #AccessibleApplication interface,
509 Accessible_isApplication (Accessible *obj)
511 return cspi_accessible_is_a (obj,
512 "IDL:Accessibility/Application:1.0");
516 * Accessible_isComponent:
517 * @obj: a pointer to the #Accessible instance to query.
519 * Query whether the specified #Accessible implements #AccessibleComponent.
521 * Returns: #TRUE if @obj implements the #AccessibleComponent interface,
525 Accessible_isComponent (Accessible *obj)
527 return cspi_accessible_is_a (obj,
528 "IDL:Accessibility/Component:1.0");
532 * Accessible_isEditableText:
533 * @obj: a pointer to the #Accessible instance to query.
535 * Query whether the specified #Accessible implements #AccessibleEditableText.
537 * Returns: #TRUE if @obj implements the #AccessibleEditableText interface,
541 Accessible_isEditableText (Accessible *obj)
543 return cspi_accessible_is_a (obj,
544 "IDL:Accessibility/EditableText:1.0");
548 * Accessible_isHypertext:
549 * @obj: a pointer to the #Accessible instance to query.
551 * Query whether the specified #Accessible implements #AccessibleHypertext.
553 * Returns: #TRUE if @obj implements the #AccessibleHypertext interface,
557 Accessible_isHypertext (Accessible *obj)
559 return cspi_accessible_is_a (obj,
560 "IDL:Accessibility/Hypertext:1.0");
564 * Accessible_isImage:
565 * @obj: a pointer to the #Accessible instance to query.
567 * Query whether the specified #Accessible implements #AccessibleImage.
569 * Returns: #TRUE if @obj implements the #AccessibleImage interface,
573 Accessible_isImage (Accessible *obj)
575 return cspi_accessible_is_a (obj,
576 "IDL:Accessibility/Image:1.0");
580 * Accessible_isSelection:
581 * @obj: a pointer to the #Accessible instance to query.
583 * Query whether the specified #Accessible implements #AccessibleSelection.
585 * Returns: #TRUE if @obj implements the #AccessibleSelection interface,
589 Accessible_isSelection (Accessible *obj)
591 return cspi_accessible_is_a (obj,
592 "IDL:Accessibility/Selection:1.0");
596 * Accessible_isTable:
597 * @obj: a pointer to the #Accessible instance to query.
599 * Query whether the specified #Accessible implements #AccessibleTable.
601 * Returns: #TRUE if @obj implements the #AccessibleTable interface,
605 Accessible_isTable (Accessible *obj)
607 return cspi_accessible_is_a (obj,
608 "IDL:Accessibility/Table:1.0");
612 * Accessible_isStreamableContent:
613 * @obj: a pointer to the #Accessible instance to query.
615 * Query whether the specified #Accessible implements
616 * #AccessibleStreamableContent.
618 * Returns: #TRUE if @obj implements the #AccessibleStreamableContent interface,
622 Accessible_isStreamableContent (Accessible *obj)
624 return cspi_accessible_is_a (obj,
625 "IDL:Accessibility/StreamableContent:1.0");
630 * @obj: a pointer to the #Accessible instance to query.
632 * Query whether the specified #Accessible implements #AccessibleText.
634 * Returns: #TRUE if @obj implements the #AccessibleText interface,
638 Accessible_isText (Accessible *obj)
640 return cspi_accessible_is_a (obj,
641 "IDL:Accessibility/Text:1.0");
645 * Accessible_isValue:
646 * @obj: a pointer to the #Accessible instance to query.
648 * Query whether the specified #Accessible implements #AccessibleValue.
650 * Returns: #TRUE if @obj implements the #AccessibleValue interface,
654 Accessible_isValue (Accessible *obj)
656 return cspi_accessible_is_a (obj,
657 "IDL:Accessibility/Value:1.0");
661 * Accessible_getApplication:
662 * @obj: a pointer to the #Accessible instance to query.
664 * Get the #AccessibleApplication interface for an #Accessible.
666 * Returns: a pointer to an #AccessibleApplication interface instance, or
667 * NULL if @obj does not implement #AccessibleApplication.
669 AccessibleApplication *
670 Accessible_getApplication (Accessible *obj)
672 return (AccessibleApplication *) Accessible_queryInterface (
673 obj, "IDL:Accessibility/Application:1.0");
677 * Accessible_getAction:
678 * @obj: a pointer to the #Accessible instance to query.
680 * Get the #AccessibleAction interface for an #Accessible.
682 * Returns: a pointer to an #AccessibleAction interface instance, or
683 * NULL if @obj does not implement #AccessibleAction.
686 Accessible_getAction (Accessible *obj)
688 return (AccessibleAction *) Accessible_queryInterface (
689 obj, "IDL:Accessibility/Action:1.0");
693 * Accessible_getComponent:
694 * @obj: a pointer to the #Accessible instance to query.
696 * Get the #AccessibleComponent interface for an #Accessible.
698 * Returns: a pointer to an #AccessibleComponent interface instance, or
699 * NULL if @obj does not implement #AccessibleComponent.
701 AccessibleComponent *
702 Accessible_getComponent (Accessible *obj)
704 return (AccessibleComponent *) Accessible_queryInterface (
705 obj, "IDL:Accessibility/Component:1.0");
709 * Accessible_getEditableText:
710 * @obj: a pointer to the #Accessible instance to query.
712 * Get the #AccessibleEditableText interface for an #Accessible.
714 * Returns: a pointer to an #AccessibleEditableText interface instance, or
715 * NULL if @obj does not implement #AccessibleEditableText.
717 AccessibleEditableText *
718 Accessible_getEditableText (Accessible *obj)
720 return (AccessibleEditableText *) Accessible_queryInterface (
721 obj, "IDL:Accessibility/EditableText:1.0");
727 * Accessible_getHypertext:
728 * @obj: a pointer to the #Accessible instance to query.
730 * Get the #AccessibleHypertext interface for an #Accessible.
732 * Returns: a pointer to an #AccessibleHypertext interface instance, or
733 * NULL if @obj does not implement #AccessibleHypertext.
735 AccessibleHypertext *
736 Accessible_getHypertext (Accessible *obj)
738 return (AccessibleHypertext *) Accessible_queryInterface (
739 obj, "IDL:Accessibility/Hypertext:1.0");
745 * Accessible_getImage:
746 * @obj: a pointer to the #Accessible instance to query.
748 * Get the #AccessibleImage interface for an #Accessible.
750 * Returns: a pointer to an #AccessibleImage interface instance, or
751 * NULL if @obj does not implement #AccessibleImage.
754 Accessible_getImage (Accessible *obj)
756 return (AccessibleImage *) Accessible_queryInterface (
757 obj, "IDL:Accessibility/Image:1.0");
763 * Accessible_getSelection:
764 * @obj: a pointer to the #Accessible instance to query.
766 * Get the #AccessibleSelection interface for an #Accessible.
768 * Returns: a pointer to an #AccessibleSelection interface instance, or
769 * NULL if @obj does not implement #AccessibleSelection.
771 AccessibleSelection *
772 Accessible_getSelection (Accessible *obj)
774 return (AccessibleSelection *) Accessible_queryInterface (
775 obj, "IDL:Accessibility/Selection:1.0");
781 * Accessible_getStreamableContent:
782 * @obj: a pointer to the #Accessible instance to query.
784 * Get the #AccessibleStreamableContent interface for an #Accessible.
786 * Returns: a pointer to an #AccessibleStreamableContent interface instance, or
787 * NULL if @obj does not implement #AccessibleStreamableContent.
789 AccessibleStreamableContent *
790 Accessible_getStreamableContent (Accessible *obj)
792 return (AccessibleStreamableContent *) Accessible_queryInterface (
793 obj, "IDL:Accessibility/StreamableContent:1.0");
797 * Accessible_getTable:
798 * @obj: a pointer to the #Accessible instance to query.
800 * Get the #AccessibleTable interface for an #Accessible.
802 * Returns: a pointer to an #AccessibleTable interface instance, or
803 * NULL if @obj does not implement #AccessibleTable.
806 Accessible_getTable (Accessible *obj)
808 return (AccessibleTable *) Accessible_queryInterface (
809 obj, "IDL:Accessibility/Table:1.0");
813 * Accessible_getText:
814 * @obj: a pointer to the #Accessible instance to query.
816 * Get the #AccessibleText interface for an #Accessible.
818 * Returns: a pointer to an #AccessibleText interface instance, or
819 * NULL if @obj does not implement #AccessibleText.
822 Accessible_getText (Accessible *obj)
824 return (AccessibleText *) Accessible_queryInterface (
825 obj, "IDL:Accessibility/Text:1.0");
831 * Accessible_getValue:
832 * @obj: a pointer to the #Accessible instance to query.
834 * Get the #AccessibleValue interface for an #Accessible.
836 * Returns: a pointer to an #AccessibleValue interface instance, or
837 * NULL if @obj does not implement #AccessibleValue.
840 Accessible_getValue (Accessible *obj)
842 return (AccessibleValue *) Accessible_queryInterface (
843 obj, "IDL:Accessibility/Value:1.0");
849 * Accessible_queryInterface:
850 * @obj: a pointer to the #Accessible instance to query.
851 * @interface_name: a UTF-8 character string specifiying the requested interface.
853 * Query an #Accessible object to for a named interface.
855 * Returns: an instance of the named interface object, if it is implemented
856 * by @obj, or NULL otherwise.
860 Accessible_queryInterface (Accessible *obj,
861 const char *interface_name)
863 Bonobo_Unknown iface;
870 iface = Accessibility_Accessible_queryInterface (CSPI_OBJREF (obj),
875 cspi_return_val_if_ev ("queryInterface", NULL);
878 * FIXME: we need to be fairly sure that references are going
879 * to mach up if we are going to expose QueryInterface, ie. we
880 * can't allow people to do:
881 * b = a.qi ("b"); b.unref, b.unref to release a's reference.
882 * this should be no real problem though for this level of API
886 return cspi_object_add (iface);
891 * AccessibleRelation_ref:
892 * @obj: a pointer to the #AccessibleRelation object on which to operate.
894 * Increment the reference count for an #AccessibleRelation object.
898 AccessibleRelation_ref (AccessibleRelation *obj)
900 cspi_object_ref (obj);
904 * AccessibleRelation_unref:
905 * @obj: a pointer to the #AccessibleRelation object on which to operate.
907 * Decrement the reference count for an #AccessibleRelation object.
911 AccessibleRelation_unref (AccessibleRelation *obj)
913 cspi_object_unref (obj);
917 * AccessibleRelation_getRelationType:
918 * @obj: a pointer to the #AccessibleRelation object to query.
920 * Get the type of relationship represented by an #AccessibleRelation.
922 * Returns: an #AccessibleRelationType indicating the type of relation
923 * encapsulated in this #AccessibleRelation object.
926 AccessibleRelationType
927 AccessibleRelation_getRelationType (AccessibleRelation *obj)
929 AccessibleRelationType retval;
931 cspi_return_val_if_fail (obj, SPI_RELATION_NULL);
933 Accessibility_Relation_getRelationType (CSPI_OBJREF (obj), cspi_ev());
934 cspi_return_val_if_ev ("getRelationType", SPI_RELATION_NULL);
939 * AccessibleRelation_getNTargets:
940 * @obj: a pointer to the #AccessibleRelation object to query.
942 * Get the number of objects which this relationship has as its
943 * target objects (the subject is the #Accessible from which this
944 * #AccessibleRelation originated).
946 * Returns: a short integer indicating how many target objects which the
947 * originating #Accessible object has the #AccessibleRelation
951 AccessibleRelation_getNTargets (AccessibleRelation *obj)
955 cspi_return_val_if_fail (obj, -1);
957 Accessibility_Relation_getNTargets (CSPI_OBJREF (obj), cspi_ev());
958 cspi_return_val_if_ev ("getNTargets", -1);
963 * AccessibleRelation_getTarget:
964 * @obj: a pointer to the #AccessibleRelation object to query.
965 * @i: a (zero-index) integer indicating which (of possibly several) target is requested.
967 * Get the @i-th target of a specified #AccessibleRelation relationship.
969 * Returns: an #Accessible which is the @i-th object with which the
970 * originating #Accessible has relationship specified in the
971 * #AccessibleRelation object.
975 AccessibleRelation_getTarget (AccessibleRelation *obj, int i)
979 cspi_return_val_if_fail (obj, NULL);
981 retval = cspi_object_add (
982 Accessibility_Relation_getTarget (CSPI_OBJREF(obj),
983 (CORBA_short) i, cspi_ev()));
984 cspi_return_val_if_ev ("getTarget", NULL);
989 * AccessibleStateSet_ref:
990 * @obj: a pointer to the #AccessibleStateSet object on which to operate.
992 * Increment the reference count for an #AccessibleStateSet object.
996 AccessibleStateSet_ref (AccessibleStateSet *obj)
998 cspi_object_ref (obj);
1002 * AccessibleStateSet_unref:
1003 * @obj: a pointer to the #AccessibleStateSet object on which to operate.
1005 * Decrement the reference count for an #AccessibleStateSet object.
1009 AccessibleStateSet_unref (AccessibleStateSet *obj)
1011 cspi_object_unref (obj);
1015 * AccessibleStateSet_contains:
1016 * @obj: a pointer to the #AccessibleStateSet object on which to operate.
1017 * @state: an #AccessibleState for which the specified #AccessibleStateSet
1020 * Determine whether a given #AccessibleStateSet includes a given state; that is,
1021 * whether @state is true for the stateset in question.
1023 * Returns: #TRUE if @state is true/included in the given #AccessibleStateSet,
1028 AccessibleStateSet_contains (AccessibleStateSet *obj,
1029 AccessibleState state)
1031 CORBA_boolean retval;
1033 cspi_return_val_if_fail (obj != NULL, FALSE);
1035 retval = Accessibility_StateSet_contains (CSPI_OBJREF (obj),
1038 cspi_return_val_if_ev ("contains", FALSE);
1040 return (SPIBoolean) retval;
1044 * AccessibleStateSet_add:
1045 * @obj: a pointer to the #AccessibleStateSet object on which to operate.
1046 * @state: an #AccessibleState to be added to the specified #AccessibleStateSet
1048 * Add a particular #AccessibleState to an #AccessibleStateSet (i.e. set the
1049 * given state to #TRUE in the stateset.
1053 AccessibleStateSet_add (AccessibleStateSet *obj,
1054 AccessibleState state)
1056 cspi_return_if_fail (obj != NULL);
1058 Accessibility_StateSet_add (CSPI_OBJREF (obj), state, cspi_ev ());
1059 cspi_check_ev ("add");
1063 * AccessibleStateSet_remove:
1064 * @obj: a pointer to the #AccessibleStateSet object on which to operate.
1065 * @state: an #AccessibleState to be removed from the specified #AccessibleStateSet
1067 * Remove a particular #AccessibleState to an #AccessibleStateSet (i.e. set the
1068 * given state to #FALSE in the stateset.)
1072 AccessibleStateSet_remove (AccessibleStateSet *obj,
1073 AccessibleState state)
1075 cspi_return_if_fail (obj != NULL);
1077 Accessibility_StateSet_remove (CSPI_OBJREF (obj), state, cspi_ev ());
1078 cspi_check_ev ("remove");
1082 * AccessibleStateSet_equals:
1083 * @obj: a pointer to the first #AccessibleStateSet object on which to operate.
1084 * @obj2: a pointer to the second #AccessibleStateSet object on which to operate.
1086 * Determine whether two instances of #AccessibleStateSet are equivalent (i.e.
1087 * consist of the same #AccessibleStates). Useful for checking multiple
1088 * state variables at once; construct the target state then compare against it.
1090 * @see AccessibleStateSet_compare().
1092 * Returns: #TRUE if the two #AccessibleStateSets are equivalent,
1097 AccessibleStateSet_equals (AccessibleStateSet *obj,
1098 AccessibleStateSet *obj2)
1105 cspi_return_val_if_fail (obj != NULL, FALSE);
1106 cspi_return_val_if_fail (obj2 != NULL, FALSE);
1108 return Accessibility_StateSet_equals (CSPI_OBJREF (obj),
1109 CSPI_OBJREF (obj2), cspi_ev ());
1113 * AccessibleStateSet_compare:
1114 * @obj: a pointer to the first #AccessibleStateSet object on which to operate.
1115 * @obj2: a pointer to the second #AccessibleStateSet object on which to operate.
1117 * Determine the differences between two instances of #AccessibleStateSet.
1118 * Not Yet Implemented.
1120 * @see AccessibleStateSet_equals().
1122 * Returns: an #AccessibleStateSet object containing all states contained on one of
1123 * the two sets but not the other.
1126 AccessibleStateSet *
1127 AccessibleStateSet_compare (AccessibleStateSet *obj,
1128 AccessibleStateSet *obj2)
1130 cspi_return_val_if_fail (obj != NULL, NULL);
1131 cspi_return_val_if_fail (obj2 != NULL, NULL);
1136 * AccessibleStateSet_isEmpty:
1137 * @obj: a pointer to the #AccessibleStateSet object on which to operate.
1139 * Determine whether a given #AccessibleStateSet is the empty set.
1141 * Returns: #TRUE if the given #AccessibleStateSet contains no (true) states,
1146 AccessibleStateSet_isEmpty (AccessibleStateSet *obj)
1148 cspi_return_val_if_fail (obj != NULL, FALSE);
1150 /* return Accessibility_StateSet_isEmpty (CSPI_OBJREF (obj), cspi_ev ());*/