+static void
+spi_atk_bridge_init_base (CORBA_any *any, AtkObject *obj,
+ Accessibility_Application *app, Accessibility_Role *role,
+ CORBA_string *name)
+{
+ const gchar *s = atk_object_get_name (obj);
+ *app = spi_accessible_new_return (atk_get_root (), FALSE, NULL);
+ *role = spi_role_from_atk_role (atk_object_get_role (obj));
+ *name = s ? s : ""; /* string gets dup-ed in util.c spi_init_any_* */
+}
+
+static void
+spi_atk_bridge_init_nil (CORBA_any *any, AtkObject *obj)
+{
+ Accessibility_Application app = CORBA_OBJECT_NIL;
+ Accessibility_Role role = Accessibility_ROLE_UNKNOWN;
+ CORBA_string name;
+ spi_atk_bridge_init_base (any, obj, &app, &role, &name);
+ spi_init_any_nil (any, app, role, name);
+}
+
+static void
+spi_atk_bridge_init_object (CORBA_any *any, AtkObject *obj, CORBA_Object *c_obj)
+{
+ Accessibility_Application app = CORBA_OBJECT_NIL;
+ Accessibility_Role role = Accessibility_ROLE_UNKNOWN;
+ CORBA_string name;
+ spi_atk_bridge_init_base (any, obj, &app, &role, &name);
+ spi_init_any_object (any, app, role, name, c_obj);
+}
+
+static void
+spi_atk_bridge_init_string (CORBA_any *any, AtkObject *obj, gchar **string)
+{
+ Accessibility_Application app = CORBA_OBJECT_NIL;
+ Accessibility_Role role = Accessibility_ROLE_UNKNOWN;
+ CORBA_string name;
+ spi_atk_bridge_init_base (any, obj, &app, &role, &name);
+ spi_init_any_string (any, app, role, name, string);
+}
+
+static void
+spi_atk_bridge_init_rect (CORBA_any *any, AtkObject *obj, AtkRectangle *rect)
+{
+ Accessibility_Application app = CORBA_OBJECT_NIL;
+ Accessibility_Role role = Accessibility_ROLE_UNKNOWN;
+ CORBA_string name;
+ spi_atk_bridge_init_base (any, obj, &app, &role, &name);
+ spi_init_any_rect (any, app, role, name, rect);
+}
+