Implementace ATK pro zadaný objekt

Všechny GObject implementují funkci get_type(). Když vezmeme předchozí příklad, podle konvence pojmenování by název funkce byl myatkimp_mytype_get_type().

V této funkci určujete, která rozhraní bude váš objekt implementovat. Když by se použila logika, která byla použita v této funkci get_type(), implementoval by objekt rozhraní ATK_TEXT:

Příklad 1-5Vzorová funkce 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); 

Měla by být implementována funkce atk_text_interface_init(), která má následující prototyp:

void atk_text_interface_init (AtkTextIface *iface); 

Tato funkce by napojila volání funkce rozhraní na konkrétní implementaci následovně:

Příklad 1-6Napojení volání vlastního rozhraní na implementaci 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; 
   ... 
}

Potom by bylo potřeba implementovat funkce myatkimp_mytype_get_text(), myatkimp_mytype_get_character_at_offset() a zbytek funkcí rozhraní ATK_TEXT.