summaryrefslogtreecommitdiff
path: root/src/arch/sharing/instance.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/sharing/instance.c')
-rw-r--r--src/arch/sharing/instance.c55
1 files changed, 16 insertions, 39 deletions
diff --git a/src/arch/sharing/instance.c b/src/arch/sharing/instance.c
index 956a4c7..a4cfcad 100644
--- a/src/arch/sharing/instance.c
+++ b/src/arch/sharing/instance.c
@@ -61,7 +61,7 @@ static void g_shared_instance_default_init(GSharedInstanceInterface *iface)
/******************************************************************************
* *
* Paramètres : instance = objet partagé à initialiser. *
-* info = information à utiliser pour la mise en place. *
+* template = informations à retrouver intégralement. *
* *
* Description : Initialise un nouvel objet partagé avec des informations. *
* *
@@ -71,14 +71,14 @@ static void g_shared_instance_default_init(GSharedInstanceInterface *iface)
* *
******************************************************************************/
-bool g_shared_instance_init(GSharedInstance *instance, const void *info)
+bool g_shared_instance_init(GSharedInstance *instance, const GSharedInstance *template)
{
bool result; /* Bilan à retourner */
GSharedInstanceIface *iface; /* Interface utilisée */
iface = G_SHARED_INSTANCE_GET_IFACE(instance);
- result = iface->init(instance, info);
+ result = iface->init(instance, template);
return result;
@@ -156,54 +156,31 @@ void g_shared_instance_dec_references(GSharedInstance *instance)
/******************************************************************************
* *
-* Paramètres : instance = objet partagé à consulter. *
-* info = compilation de d'information à analyser. *
-* *
-* Description : Indique l'objet partagé correspond à une description donnée. *
-* *
-* Retour : true si les détails centraux sont partagés, false sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-gboolean g_shared_instance_compare_info(const GSharedInstance *instance, const void *info)
-{
- bool result; /* Bilan à retourner */
- GSharedInstanceIface *iface; /* Interface utilisée */
-
- iface = G_SHARED_INSTANCE_GET_IFACE(instance);
-
- result = iface->cmp_info(instance, info);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : a = première instance d'objet partagé à comparer. *
-* b = second instance d'objet partagé à comparer. *
+* Paramètres : a = premier objet partagé à consulter. *
+* b = second objet partagé à consulter. *
* *
-* Description : Détermine si deux instances partagées sont identiques. *
+* Description : Compare de façon accélérée un object partagé avec un autre. *
* *
-* Retour : TRUE si les deux éléments partagés sont identiques, ou FALSE.*
+* Retour : Bilan de la comparaison. *
* *
* Remarques : - *
* *
******************************************************************************/
-gboolean g_shared_instance_is_equal(const GSharedInstance *a, const GSharedInstance *b)
+int g_shared_instance_quickly_compare(const GSharedInstance **a, const GSharedInstance **b)
{
- gboolean result; /* Bilan à retourner */
+ int result; /* Bilan à faire remonter */
GSharedInstanceIface *iface; /* Interface utilisée */
- assert(G_OBJECT_TYPE(a) == G_OBJECT_TYPE(b));
+ /**
+ * Comme les insertions dans les tableaux triés à l'aide de qinsert()
+ * font passer la clef en premier argument et que celle ci n'est pas un
+ * objet valide, on inverse les arguments, puis on inverse le résultat obtenu.
+ */
- iface = G_SHARED_INSTANCE_GET_IFACE(a);
+ iface = G_SHARED_INSTANCE_GET_IFACE(*b);
- result = iface->is_equal(a, b);
+ result = iface->qck_cmp(b, a) * -1;
return result;