ATK Implementation for a Specific Object

Tous les objets GObject implémentent une fonction get_type(). En utilisant l'exemple précédent, la convention d'attribution de nom pour cette fonction est mon_imp_atk_montype_get_type().

Dans cette fonction, vous spécifiez quelles interfaces sont implémentées par votre objet. Si la logique suivante est incluse dans cette fonction get_type(), cet objet implémente alors l'interface ATK_TEXT :

Exemple I.5 Exemple de fonction 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 fonction atk_text_interface_init(), qui possède le prototype suivant, doit être implémentée :

void atk_text_interface_init (AtkTextIface *iface); 

Cette fonction connecte les appels de la fonction d'interface à l'implémentation spécifique comme suit :

Exemple I.6 Connexion des appels d'interface personnalisés à une implémentation d'AtkObject
void 
atk_text_interface_init (AtkTextIface *iface) 
{ 
   g_return_if_fail (iface != NULL); 
   iface->get_text = mon_imp_atk_montype_get_text; 
   iface->get_character_at_offset = mon_imp_atk_montype_get_character_at_offset; 
   ... 
}

Ensuite les fonctions mon_imp_atk_montype_get_text(), mon_imp_atk_montype_get_character_at_offset() et le reste des fonctions de l'interface ATK_TEXT doivent être implémentés.