Implementación ATK para un objeto específico

Todos los GObject implementan una función get_type(). Usando el ejemplo anterior, la convención de nombres para el nombre de esta función sería myatkimp_mytype_get_type().

En esta función, especifique qué interfaces implementa su objeto. Si la siguiente lógica se incluyese en esta función get_type(), este objeto podría implementar la interfaz del tipo ATK_TEXT:

Ejemplo 1-5Ejemplo de función get_type()
static const GInterfaceInfo atk_text_info = 
{ 
   (GInterfaceInitFunc) atk_text_interface_init, 
   (GInterfaceFinalizeFunc) NULL, 
   NULL 
}; 

g_type_add_interface_static (type, ATK_TYPE_TEXT, 
                             &atk_text_info); 

La función atl_text_interface_init(), que tiene el siguiente prototipo, deberá implementarse:

void atk_text_interface_init (AtkTextIface *iface); 

Esta función conectará las llamadas de función de interfaz con la implementación específica tal y como sigue:

Ejemplo 1-6Conectar llamadas de interfaz personalizadas con una implementación de un AtkObject
void 
atk_text_interface_init (AtkTextIface *iface) 
{ 
   g_return_if_fail (iface != NULL); 
   iface->get_text = myatkimp_mytype_get_text; 
   iface->get_character_at_offset = myatkimp_mytype_get_character_at_offset; 
   ... 
}

Entonces podría ser necesario implementar las funciones myatkimp_mytype_get_text(), myatkimp_mytype_get_character_at_offset(), y el resto de las funciones ATK_TEXT de la interfaz.