Added definitions for SpiRemoteObject, a derivative of AtkObject used to
[platform/core/uifw/at-spi2-atk.git] / cspi / spi_text.c
index 7656c89..558b38f 100644 (file)
@@ -1,38 +1,29 @@
+#include <cspi/spi-private.h>
+
 /**
  * AccessibleText_ref:
  * @obj: a pointer to the #AccessibleText object on which to operate.
  *
  * Increment the reference count for an #AccessibleText object.
- *
- * Returns: (no return code implemented yet).
- *
  **/
-int
+void
 AccessibleText_ref (AccessibleText *obj)
 {
-  Accessibility_Text_ref (*obj, &ev);
-  return 0;
+  cspi_object_ref (obj);
 }
 
-
-
 /**
  * AccessibleText_unref:
  * @obj: a pointer to the #Accessible object on which to operate.
  *
  * Decrement the reference count for an #AccessibleText object.
- *
- * Returns: (no return code implemented yet).
- *
  **/
-int
+void
 AccessibleText_unref (AccessibleText *obj)
 {
-  Accessibility_Text_unref (*obj, &ev);
-  return 0;
+  cspi_object_unref (obj);
 }
 
-
 /**
  * AccessibleText_getCharacterCount:
  * @obj: a pointer to the #AccessibleText object to query.
@@ -41,24 +32,22 @@ AccessibleText_unref (AccessibleText *obj)
  *
  * Returns: a long integer indicating the total number of
  *              characters in the #AccessibleText object.
- *
  **/
 long
 AccessibleText_getCharacterCount (AccessibleText *obj)
 {
   long retval;
 
-  CORBA_exception_init (&ev);
+  cspi_return_val_if_fail (obj != NULL, -1);
+
   retval = (long)
-    Accessibility_Text__get_characterCount (*obj, &ev);
+    Accessibility_Text__get_characterCount (CSPI_OBJREF (obj), cspi_ev ());
 
-  spi_check_ev (&ev, "SpiAccessibleText_getCharacterCount");
+  cspi_return_val_if_ev ("getCharacterCount", -1);
 
   return retval;
 }
 
-
-
 /**
  * AccessibleText_getText:
  * @obj: a pointer to the #AccessibleText object to query.
@@ -71,16 +60,25 @@ AccessibleText_getCharacterCount (AccessibleText *obj)
  *
  * Returns: a text string containing characters from @startOffset
  *          to @endOffset-1, inclusive, encoded as UTF-8.
- *
  **/
 char *
 AccessibleText_getText (AccessibleText *obj,
                         long int startOffset,
                         long int endOffset)
 {
-  return (char *)
-    Accessibility_Text_getText (*obj,
-                               (CORBA_long) startOffset, (CORBA_long) endOffset, &ev);
+  char *retval;
+
+  cspi_return_val_if_fail (obj != NULL, NULL);
+
+  retval =
+    Accessibility_Text_getText (CSPI_OBJREF (obj),
+                               (CORBA_long) startOffset,
+                               (CORBA_long) endOffset,
+                               cspi_ev ());
+
+  cspi_return_val_if_ev ("getText", NULL);
+
+  return retval;
 }
 
 /**
@@ -90,15 +88,21 @@ AccessibleText_getText (AccessibleText *obj,
  * Get the current offset of the text caret in an #AccessibleText object.
  *
  * Returns: a long integer indicating the current position of the text caret.
- *
  **/
 long
 AccessibleText_getCaretOffset (AccessibleText *obj)
 {
-  return (long)
-    Accessibility_Text__get_caretOffset (*obj, &ev);
-}
+  long retval;
 
+  cspi_return_val_if_fail (obj != NULL, -1);
+
+  retval =
+    Accessibility_Text__get_caretOffset (CSPI_OBJREF (obj), cspi_ev ());
+
+  cspi_return_val_if_ev ("getCaretOffset", -1);
+
+  return retval;
+}
 
 /**
  * AccessibleText_getAttributes:
@@ -114,7 +118,6 @@ AccessibleText_getCaretOffset (AccessibleText *obj)
  * Returns: a text string describing the attributes occurring within the
  *          attribute run containing @offset, encoded as UTF-8 and
  *          delimited by ':'
- *
  **/
 char *
 AccessibleText_getAttributes (AccessibleText *obj,
@@ -124,19 +127,33 @@ AccessibleText_getAttributes (AccessibleText *obj,
 {
   CORBA_long retStartOffset, retEndOffset;
   char *retval;        
+
+  if (obj == NULL)
+    {
+      *startOffset = *endOffset = 0;
+      return NULL;
+    }
+
   retval = (char *)
-    Accessibility_Text_getAttributes (*obj,
+    Accessibility_Text_getAttributes (CSPI_OBJREF (obj),
                                      (CORBA_long) offset,
                                      &retStartOffset,
                                      &retEndOffset,
-                                     &ev);
-  *startOffset = (long) retStartOffset;
-  *endOffset = (long) retEndOffset;
+                                     cspi_ev ());
+
+  if (!cspi_check_ev ("getAttributes"))
+    {
+      *startOffset = *endOffset = 0;
+    }
+  else
+    {
+      *startOffset = retStartOffset;
+      *endOffset   = retEndOffset;
+    }
+
   return retval;
 }
 
-
-
 /**
  * AccessibleText_setCaretOffset:
  * @obj: a pointer to the #AccessibleText object on which to operate.
@@ -145,15 +162,22 @@ AccessibleText_getAttributes (AccessibleText *obj,
  * Set the text caret position for an #AccessibleText object.
  *
  * Returns: #TRUE if successful, #FALSE otherwise.
- *
  **/
-boolean
+SPIBoolean
 AccessibleText_setCaretOffset (AccessibleText *obj,
                                long int newOffset)
 {
-  return (boolean)
-    Accessibility_Text_setCaretOffset (*obj,
-                                      (CORBA_long) newOffset, &ev);
+  SPIBoolean retval;
+
+  cspi_return_val_if_fail (obj != NULL, FALSE);
+
+  retval =
+    Accessibility_Text_setCaretOffset (CSPI_OBJREF (obj),
+                                      (CORBA_long) newOffset, cspi_ev ());
+
+  cspi_return_val_if_ev ("setCaretOffset", FALSE);
+
+  return retval;
 }
 
 /**
@@ -176,7 +200,6 @@ AccessibleText_setCaretOffset (AccessibleText *obj,
  * Returns: a UTF-8 string representing the delimited text, both of whose
  *          delimiting boundaries are before the current offset, or
  *          an empty string if no such text exists.
- *
  **/
 char *
 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
@@ -188,10 +211,10 @@ AccessibleText_getTextBeforeOffset (AccessibleText *obj,
   char *retval;
   CORBA_long retStartOffset, retEndOffset;
   retval = (char *)
-    Accessibility_Text_getTextBeforeOffset (*obj,
+    Accessibility_Text_getTextBeforeOffset (CSPI_OBJREF (obj),
                                           (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
                                           &retStartOffset, &retEndOffset,
-                                          &ev);
+                                          cspi_ev ());
   *startOffset = (long) retStartOffset;
   *endOffset = (long) retEndOffset;
   return retval;
@@ -217,7 +240,6 @@ AccessibleText_getTextBeforeOffset (AccessibleText *obj,
  * Returns: a UTF-8 string representing the delimited text, whose
  *          delimiting boundaries bracket the current offset, or
  *          an empty string if no such text exists.
- *
  **/
 char *
 AccessibleText_getTextAtOffset (AccessibleText *obj,
@@ -227,22 +249,37 @@ AccessibleText_getTextAtOffset (AccessibleText *obj,
 {
   CORBA_long corbaStartOffset;
   CORBA_long corbaEndOffset;
-  char *retval = "";
-  retval = Accessibility_Text_getTextAtOffset (*obj,
+  char      *retval;
+
+  if (obj == NULL)
+    {
+      *startOffset = *endOffset = 0;
+      return NULL;
+    }
+
+  retval = Accessibility_Text_getTextAtOffset (CSPI_OBJREF (obj),
                                               (CORBA_long) offset,
                                               (Accessibility_TEXT_BOUNDARY_TYPE) type,
                                               &corbaStartOffset,
                                               &corbaEndOffset,
-                                              &ev);
-  *startOffset = (long) corbaStartOffset;
-  *endOffset = (long) corbaEndOffset;
-#ifdef SPI_DEBUG
+                                              cspi_ev ());
+
+  if (!cspi_check_ev ("getTextAtOffset"))
+    {
+      *startOffset = *endOffset = 0;
+      retval = NULL;
+    }
+  else
+    {
+      *startOffset = corbaStartOffset;
+      *endOffset   = corbaEndOffset;
+    }
+#ifdef CSPI_DEBUG
   fprintf (stderr, "text offsets %ld to %ld\n", *startOffset, *endOffset);
 #endif
   return retval;
 }
 
-
 /**
  * AccessibleText_getTextAfterOffset:
  * @obj: a pointer to the #AccessibleText object on which to operate.
@@ -263,7 +300,6 @@ AccessibleText_getTextAtOffset (AccessibleText *obj,
  * Returns: a UTF-8 string representing the delimited text, both of whose
  *          delimiting boundaries are after or inclusive of the current
  *          offset, or an empty string if no such text exists.
- *
  **/
 char *
 AccessibleText_getTextAfterOffset (AccessibleText *obj,
@@ -273,18 +309,32 @@ AccessibleText_getTextAfterOffset (AccessibleText *obj,
 {
   char *retval;
   CORBA_long retStartOffset, retEndOffset;
+
+  if (obj == NULL)
+    {
+      *startOffset = *endOffset = 0;
+      return NULL;
+    }
+
   retval = (char *)
-    Accessibility_Text_getTextAfterOffset (*obj,
+    Accessibility_Text_getTextAfterOffset (CSPI_OBJREF (obj),
                                           (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
                                           &retStartOffset, &retEndOffset,
-                                          &ev);
-  *startOffset = (long) retStartOffset;
-  *endOffset = (long) retEndOffset;
+                                          cspi_ev ());
+
+  if (!cspi_check_ev ("getTextAfterOffset"))
+    {
+      *startOffset = *endOffset = 0;
+    }
+  else
+    {
+      *startOffset = retStartOffset;
+      *endOffset   = retEndOffset;
+    }
+
   return retval;
 }
 
-
-
 /**
  * AccessibleText_getCharacterAtOffset:
  * @obj: a pointer to the #AccessibleText object on which to operate.
@@ -297,15 +347,23 @@ AccessibleText_getTextAfterOffset (AccessibleText *obj,
  *        UCS-4 unicode code point of the given character, or
  *        0xFFFFFFFF if the character in question cannot be represented
  *        in the UCS-4 encoding.
- *
  **/
 unsigned long
 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
                                      long int offset)
 {
-  return (unsigned long)
-    Accessibility_Text_getCharacterAtOffset (*obj,
-                                            (CORBA_long) offset, &ev);
+  long retval;
+
+  cspi_return_val_if_fail (obj != NULL, -1);
+
+  retval =
+    Accessibility_Text_getCharacterAtOffset (CSPI_OBJREF (obj),
+                                            (CORBA_long) offset,
+                                            cspi_ev ());
+
+  cspi_return_val_if_ev ("getCharacterAtOffset", -1);
+
+  return retval;
 }
 
 /**
@@ -326,7 +384,6 @@ AccessibleText_getCharacterAtOffset (AccessibleText *obj,
  *
  * Get the bounding box containing the glyph representing
  *        the character at a particular text offset.
- *
  **/
 void
 AccessibleText_getCharacterExtents (AccessibleText *obj,
@@ -338,20 +395,36 @@ AccessibleText_getCharacterExtents (AccessibleText *obj,
                                    AccessibleCoordType type)
 {
   CORBA_long retX, retY, retWidth, retHeight;
-  Accessibility_Text_getCharacterExtents (*obj,
+
+  if (obj == NULL)
+    {
+      *x = *y = 0;
+      *width = *height = 0;
+      return;
+    }
+
+  Accessibility_Text_getCharacterExtents (CSPI_OBJREF (obj),
                                          (CORBA_long) offset,
                                          &retX,
                                          &retY,
                                          &retWidth,
                                          &retHeight,
-                                         (CORBA_short) type, &ev);
-  *x = (long) retX;
-  *y = (long) retY;
-  *width = (long) retWidth;
-  *height = (long) retHeight;
+                                         (CORBA_short) type, cspi_ev ());
+
+  if (!cspi_check_ev ("getCharacterExtents"))
+    {
+      *x = *y = 0;
+      *width = *height = 0;
+    }
+  else
+    {
+      *x = retX;
+      *y = retY;
+      *width = retWidth;
+      *height = retHeight;
+    }
 }
 
-
 /**
  * AccessibleText_getOffsetAtPoint:
  * @obj: a pointer to the #AccessibleText object on which to operate.
@@ -372,11 +445,20 @@ AccessibleText_getOffsetAtPoint (AccessibleText *obj,
                                  long int y,
                                 AccessibleCoordType type)
 {
-  return (long)
-    Accessibility_Text_getOffsetAtPoint (*obj,
-                                        (CORBA_long) x, (CORBA_long) y, (CORBA_short) type, &ev);
-}
+  long retval;
+
+  cspi_return_val_if_fail (obj != NULL, -1);
+
+  retval =
+    Accessibility_Text_getOffsetAtPoint (CSPI_OBJREF (obj),
+                                        (CORBA_long) x,
+                                        (CORBA_long) y,
+                                        (CORBA_short) type, cspi_ev ());
 
+  cspi_return_val_if_ev ("getOffsetAtPoint", -1);
+
+  return retval;
+}
 
 /**
  * AccessibleText_getNSelections:
@@ -388,16 +470,21 @@ AccessibleText_getOffsetAtPoint (AccessibleText *obj,
  * Returns: a long integer indicating the current
  *          number of non-contiguous text selections active
  *          within an #AccessibleText object.
- *
  **/
 long
 AccessibleText_getNSelections (AccessibleText *obj)
 {
-  return (long)
-    Accessibility_Text_getNSelections (*obj, &ev);
-}
+  long retval;
 
+  cspi_return_val_if_fail (obj != NULL, -1);
 
+  retval =
+    Accessibility_Text_getNSelections (CSPI_OBJREF (obj), cspi_ev ());
+
+  cspi_return_val_if_ev ("getNSelections", -1);
+
+  return retval;
+}
 
 /**
  * AccessibleText_getSelection:
@@ -410,7 +497,6 @@ AccessibleText_getNSelections (AccessibleText *obj)
  *
  * Get the bounds of the @selectionNum-th active text selection for an
  *         #AccessibleText object.
- *
  **/
 void
 AccessibleText_getSelection (AccessibleText *obj,
@@ -419,15 +505,28 @@ AccessibleText_getSelection (AccessibleText *obj,
                             long int *endOffset)
 {
   CORBA_long retStartOffset, retEndOffset;
-  Accessibility_Text_getSelection (*obj,
-                                  (CORBA_long) selectionNum,
-                                  &retStartOffset, &retEndOffset, &ev);
-  
-  *startOffset = (long) retStartOffset;
-  *endOffset = (long) retEndOffset;
-}
 
+  if (obj == NULL)
+    {
+      *endOffset = *startOffset = -1;
+      return;
+    }
 
+  Accessibility_Text_getSelection (CSPI_OBJREF (obj),
+                                  (CORBA_long) selectionNum,
+                                  &retStartOffset, &retEndOffset,
+                                  cspi_ev ());
+
+  if (!cspi_check_ev ("getSelection"))
+    {
+      *startOffset = *endOffset = 0;
+    }
+  else
+    {
+      *startOffset = retStartOffset;
+      *endOffset   = retEndOffset;
+    }
+}
 
 /**
  * AccessibleText_addSelection:
@@ -438,18 +537,24 @@ AccessibleText_getSelection (AccessibleText *obj,
  * Select some text (add a text selection) in an #AccessibleText object.
  *
  * Returns: #TRUE if successful, #FALSE otherwise.
- *
  **/
-boolean
+SPIBoolean
 AccessibleText_addSelection (AccessibleText *obj,
                             long int startOffset, long int endOffset)
 {
-  return (boolean)
-    Accessibility_Text_addSelection (*obj,
-                                    (CORBA_long) startOffset, (CORBA_long) endOffset,
-                                    &ev);
-}
+  SPIBoolean retval;
+
+  cspi_return_val_if_fail (obj != NULL, FALSE);
+
+  retval =
+    Accessibility_Text_addSelection (
+      CSPI_OBJREF (obj), (CORBA_long) startOffset,
+      (CORBA_long) endOffset, cspi_ev ());
+
+  cspi_return_val_if_ev ("addSelection", FALSE);
 
+  return retval;
+}
 
 /**
  * AccessibleText_removeSelection:
@@ -460,15 +565,22 @@ AccessibleText_addSelection (AccessibleText *obj,
  * De-select a text selection.
  *
  * Returns: #TRUE if successful, #FALSE otherwise.
- *
  **/
-boolean
+SPIBoolean
 AccessibleText_removeSelection (AccessibleText *obj,
                                long int selectionNum)
 {
-  return (boolean)
-    Accessibility_Text_removeSelection (*obj,
-                                       (CORBA_long) selectionNum, &ev);
+  SPIBoolean retval;
+
+  cspi_return_val_if_fail (obj != NULL, FALSE);
+
+  retval =
+    Accessibility_Text_removeSelection (
+      CSPI_OBJREF (obj), (CORBA_long) selectionNum, cspi_ev ());
+
+  cspi_return_val_if_ev ("removeSelection", FALSE);
+
+  return retval;
 }
 
 /**
@@ -482,19 +594,23 @@ AccessibleText_removeSelection (AccessibleText *obj,
  * Change the bounds of an existing #AccessibleText text selection.
  *
  * Returns: #TRUE if successful, #FALSE otherwise.
- *
  **/
-boolean
+SPIBoolean
 AccessibleText_setSelection (AccessibleText *obj,
                             long int selectionNum,
                             long int startOffset,
                             long int endOffset)
 {
-  return (boolean)
-    Accessibility_Text_setSelection (*obj,
-                                    (CORBA_long) selectionNum,
-                                    (CORBA_long) startOffset,
-                                    (CORBA_long) endOffset, &ev);
+  cspi_return_val_if_fail (obj != NULL, FALSE);
+
+  Accessibility_Text_setSelection (CSPI_OBJREF (obj),
+                                  (CORBA_long) selectionNum,
+                                  (CORBA_long) startOffset,
+                                  (CORBA_long) endOffset, cspi_ev ());
+
+  cspi_return_val_if_ev ("setSelection", FALSE);
+
+  return TRUE;
 }