diff options
Diffstat (limited to 'src/analysis/type.c')
-rw-r--r-- | src/analysis/type.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/analysis/type.c b/src/analysis/type.c index 9a8e85b..350b4e2 100644 --- a/src/analysis/type.c +++ b/src/analysis/type.c @@ -138,6 +138,37 @@ static void g_data_type_finalize(GDataType *type) /****************************************************************************** * * +* Paramètres : type = type à consulter. * +* * +* Description : Calcule une empreinte pour un type de données. * +* * +* Retour : Valeur arbitraire sur 32 bits, idéalement unique par type. * +* * +* Remarques : - * +* * +******************************************************************************/ + +guint g_data_type_hash(const GDataType *type) +{ + guint result; /* Empreinte à renvoyer */ + GDataTypeClass *class; /* Classe du type */ + + class = G_DATA_TYPE_GET_CLASS(type); + + result = class->hash(type); + + result ^= g_int_hash((gint []){ g_data_type_get_qualifiers(type) }); + + if (type->namespace != NULL) + result ^= g_data_type_hash(type->namespace); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : type = type à dupliquer. * * * * Description : Crée un copie d'un type existant. * |