Implementação de AtkObject

AtkObjects são GObjects e todos GObjects precisam especificar a função get_type(). Aqui está um exemplo que configura uma classe e inicializador de instância. Essa função get_type() também especifica que o objeto implementa ATK_TEXT e especifica o objeto pai para ser MYATKIMP_MYPARENTTYPE.

Example 1-7Exemplo de implementação get_type()
GType 
myatkimp_mytype_get_type (void) 
{ 
   static GType type = 0; 

   if (!type) 
   { 
      static const GTypeInfo tinfo = 
      { 
         sizeof (GailLabelClass), 
         (GBaseInitFunc) NULL,                              /* base init */ 
         (GBaseFinalizeFunc) NULL,                          /* base finalize */
         (GClassInitFunc) myatkimp_mytype_class_init,       /* class init */ 
         (GClassFinalizeFunc) NULL,                         /* class finalize */ 
         NULL,                                              /* class data */ 
         sizeof (GailLabel),                                /* instance size */ 
         0,                                                 /* nb preallocs */ 
         (GInstanceInitFunc) myatkimp_mytype_instance_init, /* instance init */ 
         NULL                                               /* value table */ 
      }; 

      /* Configura a estrutura atk_text_info usada abaixo */ 
      static const GInterfaceInfo atk_text_info = 
      { 
         (GInterfaceInitFunc) atk_text_interface_init, 
         (GInterfaceFinalizeFunc) NULL, 
         NULL 
      }; 

      /* Configura o nome de tipo e especifica o pai do tipo */ 
      type = g_type_register_static (MYATKIMP_MYPARENTTYPE, 
            "MyatkimpMytype", &tinfo, 0); 

      /* Essa classe implementa uma interface ATK_TYPE_TEXT */ 
      g_type_add_interface_static (type, ATK_TYPE_TEXT, 
                                   &atk_text_info); 
   } 
   return type; 
}