Add a method to compare infos

Add g_base_info_equal.
This commit is contained in:
Simon van der Linden 2009-11-20 10:38:36 +01:00 committed by Simon van der Linden
parent 43f1c2db17
commit 46e36632af
2 changed files with 22 additions and 0 deletions

20
ginfo.c
View File

@ -554,6 +554,26 @@ g_base_info_get_typelib (GIBaseInfo *info)
return info->typelib;
}
/*
* g_base_info_equal:
* @info1: A #GIBaseInfo
* @info2: A #GIBaseInfo
*
* Compare two #GIBaseInfo.
*
* Using pointer comparison is not practical since many functions return
* different instances of #GIBaseInfo that refers to the same part of the
* TypeLib; use this function instead to do #GIBaseInfo comparisons.
*
* Return value: TRUE if and only if @info1 equals @info2.
*/
gboolean
g_base_info_equal (GIBaseInfo *info1, GIBaseInfo *info2)
{
/* Compare the TypeLib pointers, which are mmapped. */
return info1->typelib->data + info1->offset == info2->typelib->data + info2->offset;
}
/* GIFunctionInfo functions */
const gchar *
g_function_info_get_symbol (GIFunctionInfo *info)

View File

@ -203,6 +203,8 @@ gboolean g_base_info_iterate_attributes (GIBaseInfo *info,
char **value);
GIBaseInfo * g_base_info_get_container (GIBaseInfo *info);
GTypelib * g_base_info_get_typelib (GIBaseInfo *info);
gboolean g_base_info_equal (GIBaseInfo *info1,
GIBaseInfo *info2);
GIBaseInfo * g_info_new (GIInfoType type,
GIBaseInfo *container,