+void
+report_text_selection_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleTextSelectionChangedEvent_getSelectionString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+
+void
+report_active_descendant_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ char *s1;
+ Accessible *ao;
+
+ ao = AccessibleActiveDescendantChangedEvent_getActiveDescendant (event);
+ s1 = Accessible_getName (ao);
+ fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type,
+ s ? s : "<null>", s1 ? s1 : "<null>",
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ SPI_freeString (s1);
+ Accessible_unref (ao);
+}
+void
+report_children_changed_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ char *s1;
+ Accessible *ao;
+
+ ao = AccessibleChildChangedEvent_getChildAccessible (event);
+ s1 = Accessible_getName (ao);
+ fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type,
+ s ? s : "<null>", s1 ? s1 : "<null>",
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ SPI_freeString (s1);
+ Accessible_unref (ao);
+}
+
+void
+report_name_changed_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleNameChangedEvent_getNameString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+
+void
+report_description_changed_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleDescriptionChangedEvent_getDescriptionString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+
+void
+report_parent_changed_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ char *s1;
+ Accessible *ao;
+
+ ao = AccessibleParentChangedEvent_getParentAccessible (event);
+ s1 = Accessible_getName (ao);
+ fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type,
+ s ? s : "<null>", s1 ? s1 : "<null>",
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ SPI_freeString (s1);
+ Accessible_unref (ao);
+}
+
+void
+report_window_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleWindowEvent_getTitleString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+
+void
+report_table_summary_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ char *s1;
+ Accessible *ao;
+
+ ao = AccessibleTableSummaryChangedEvent_getSummaryAccessible (event);
+ s1 = Accessible_getName (ao);
+ fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type,
+ s ? s : "<null>", s1 ? s1 : "<null>",
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ SPI_freeString (s1);
+ Accessible_unref (ao);
+}
+
+void
+report_table_header_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ char *s1;
+ Accessible *ao;
+
+ ao = AccessibleTableHeaderChangedEvent_getHeaderAccessible (event);
+ s1 = Accessible_getName (ao);
+ fprintf (stderr, "(detail) %s parent: %s child: %s %d %d\n", event->type,
+ s ? s : "<null>", s1 ? s1 : "<null>",
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ SPI_freeString (s1);
+ Accessible_unref (ao);
+}
+
+void
+report_table_caption_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleTableCaptionChangedEvent_getCaptionString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+
+void
+report_table_row_description_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleTableRowDescriptionChangedEvent_getDescriptionString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+
+void
+report_table_column_description_event (const AccessibleEvent *event, void *user_data)
+{
+ char *s = Accessible_getName (event->source);
+ fprintf (stderr, "(detail) %s %s %d %d\n", event->type, s,
+ event->detail1, event->detail2);
+ SPI_freeString (s);
+ s = AccessibleTableColumnDescriptionChangedEvent_getDescriptionString (event);
+ fprintf (stderr, "context string %s\n", (s) ? s : "<nil>");
+ SPI_freeString (s);
+}
+