Implémentation d'AtkObject

Les AtkObject sont des objets GObjects et tous les GObject doivent spécifier la fonction get_type(). Voici un exemple qui définit une classe et un initialisateur d'instance. Cette fonction get_type() spécifie aussi que l'objet implémente ATK_TEXT et spécifie l'objet parent comme un MON_IMP_ATK_MONTYPEPARENT.

Exemple I.7 Exemple d'implémentation de get_type()
GType 
mon_imp_atk_montype_get_type (void) 
{ 
   static GType type = 0; 

   if (!type) 
   { 
      static const GTypeInfo tinfo = 
      { 
         sizeof (GailLabelClass), 
         (GBaseInitFunc) NULL,                                  /* initialisation base */ 
         (GBaseFinalizeFunc) NULL,                              /* finalisation base */
         (GClassInitFunc) mon_imp_atk_montype_class_init,       /* class init */ 
         (GClassFinalizeFunc) NULL,                             /* class finalize */ 
         NULL,                                                  /* données de la classe */ 
         sizeof (GailLabel),                                    /* taille de l'instance */ 
         0,                                                     /* nbre préallocations */ 
         (GInstanceInitFunc) mon_imp_atk_montype_instance_init, /* instance init */ 
         NULL                                                   /* tableau de valeur */ 
      }; 

      /* Organisation de la structure atk_text_info utilisée ci-dessous */ 
      static const GInterfaceInfo atk_text_info = 
      { 
         (GInterfaceInitFunc) atk_text_interface_init, 
         (GInterfaceFinalizeFunc) NULL, 
         NULL 
      }; 

      /* Organisation du typename et spécification du type du parent */ 
      type = g_type_register_static (MON_IMP_ATK_MONTYPEPARENT, 
            "monimpatkmontype", &tinfo, 0); 

      /* Cette classe implémente l'interface ATK_TYPE_TEXT */ 
      g_type_add_interface_static (type, ATK_TYPE_TEXT, 
                                   &atk_text_info); 
   } 
   return type; 
}