Implementación de AtkObject

Los AtkObject son GObjects, y todos los GObject necesitan especificar la función get_type(). Aquí hay un ejemplo que establece una clase e inicializa una instancia. Esta función get_type() también especifica que el objeto implementa ATK_TEXT y especifica el objeto padre para ser MYATKIMP_MYPARENTTYPE.

Ejemplo 1-7Ejemplo de implementación de get_type()
GType 
myatkimp_mytype_get_type (void) 
{ 
   static GType type = 0; 

   if (!type) 
   { 
      static const GTypeInfo tinfo = 
      { 
         sizeof (GailLabelClass), 
         (GBaseInitFunc) NULL,                              /* inicialización de la base */ 
         (GBaseFinalizeFunc) NULL,                          /* finalización de la base */
         (GClassInitFunc) myatkimp_mytype_class_init,       /* inicialización de la clase */ 
         (GClassFinalizeFunc) NULL,                         /* finalización de la clase */ 
         NULL,                                              /* datos de la clase */ 
         sizeof (GailLabel),                                /* tamaño de la instancia */ 
         0,                                                 /* número de reservas de memoria («preallocs») */ 
         (GInstanceInitFunc) myatkimp_mytype_instance_init, /* inicialización de la instancia */ 
         NULL                                               /* tabla de valores */ 
      }; 

      /* Configurar la estructura atk_text_info usada a continuación */ 
      static const GInterfaceInfo atk_text_info = 
      { 
         (GInterfaceInitFunc) atk_text_interface_init, 
         (GInterfaceFinalizeFunc) NULL, 
         NULL 
      }; 

      /* Establecer el tipo de nombre y especificar el tipo de padre */ 
      type = g_type_register_static (MYATKIMP_MYPARENTTYPE, 
            "MyatkimpMytype", &tinfo, 0); 

      /* Esta clase implementa la interfaz ATK_TYPE_TEXT */ 
      g_type_add_interface_static (type, ATK_TYPE_TEXT, 
                                   &atk_text_info); 
   } 
   return type; 
}