From d5024d1160251b984c2854bd3405eda75723bb5b Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Fri, 17 Jan 2025 12:30:19 +0100
Subject: Rename files.

---
 plugins/pychrysalide/glibext/comparable.c | 341 ++++++++++++++++++++++++++++++
 plugins/pychrysalide/glibext/comparable.h |  45 ++++
 plugins/pychrysalide/glibext/comparison.c | 341 ------------------------------
 plugins/pychrysalide/glibext/comparison.h |  45 ----
 src/glibext/comparable-int.h              |  58 +++++
 src/glibext/comparable.c                  | 199 +++++++++++++++++
 src/glibext/comparable.h                  |  80 +++++++
 src/glibext/comparison-int.h              |  58 -----
 src/glibext/comparison.c                  | 199 -----------------
 src/glibext/comparison.h                  |  80 -------
 10 files changed, 723 insertions(+), 723 deletions(-)
 create mode 100644 plugins/pychrysalide/glibext/comparable.c
 create mode 100644 plugins/pychrysalide/glibext/comparable.h
 delete mode 100644 plugins/pychrysalide/glibext/comparison.c
 delete mode 100644 plugins/pychrysalide/glibext/comparison.h
 create mode 100644 src/glibext/comparable-int.h
 create mode 100644 src/glibext/comparable.c
 create mode 100644 src/glibext/comparable.h
 delete mode 100644 src/glibext/comparison-int.h
 delete mode 100644 src/glibext/comparison.c
 delete mode 100644 src/glibext/comparison.h

diff --git a/plugins/pychrysalide/glibext/comparable.c b/plugins/pychrysalide/glibext/comparable.c
new file mode 100644
index 0000000..548f700
--- /dev/null
+++ b/plugins/pychrysalide/glibext/comparable.c
@@ -0,0 +1,341 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * comparison.c - équivalent Python du fichier "glibext/comparison.h"
+ *
+ * Copyright (C) 2018-2019 Cyrille Bagard
+ *
+ *  This file is part of Chrysalide.
+ *
+ *  Chrysalide is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  Chrysalide is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include "comparison.h"
+
+
+#include <pygobject.h>
+
+
+#include <glibext/comparison-int.h>
+
+
+#include "constants.h"
+#include "../access.h"
+#include "../helpers.h"
+#include "../analysis/content.h"
+
+
+
+/* ------------------------ GLUE POUR CREATION DEPUIS PYTHON ------------------------ */
+
+
+/* Procède à l'initialisation de l'interface de comparaison. */
+static void py_comparable_item_interface_init(GComparableItemIface *, gpointer *);
+
+/* Réalise une comparaison entre objets selon un critère précis. */
+static bool py_comparable_item_compare_rich(const GComparableItem *, const GComparableItem *, RichCmpOperation, bool *);
+
+
+
+/* ------------------------- CONNEXION AVEC L'API DE PYTHON ------------------------- */
+
+
+/* Effectue une comparaison avec un objet 'ComparableItem'. */
+static PyObject *py_comparable_item_richcompare(PyObject *, PyObject *, int);
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/*                          GLUE POUR CREATION DEPUIS PYTHON                          */
+/* ---------------------------------------------------------------------------------- */
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : iface  = interface GLib à initialiser.                       *
+*                unused = adresse non utilisée ici.                           *
+*                                                                             *
+*  Description : Procède à l'initialisation de l'interface de comparaison.    *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static void py_comparable_item_interface_init(GComparableItemIface *iface, gpointer *unused)
+{
+
+#define COMPARABLE_ITEM_DOC                                                 \
+    "ComparableItem provides an interface to compare objects.\n"            \
+    "\n"                                                                    \
+    "A typical class declaration for a new implementation looks like:\n"    \
+    "\n"                                                                    \
+    "    class NewImplem(GObject.Object, ComparableItem):\n"                \
+    "        ...\n"                                                         \
+    "\n"
+
+    iface->cmp_rich = py_comparable_item_compare_rich;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : item   = premier objet à cnsulter pour une comparaison.      *
+*                other  = second objet à cnsulter pour une comparaison.       *
+*                op     = opération de comparaison à réaliser.                *
+*                status = bilan des opérations de comparaison. [OUT]          *
+*                                                                             *
+*  Description : Réalise une comparaison entre objets selon un critère précis.*
+*                                                                             *
+*  Retour      : true si la comparaison a pu être effectuée, false sinon.     *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static bool py_comparable_item_compare_rich(const GComparableItem *item, const GComparableItem *other, RichCmpOperation op, bool *status)
+{
+    bool result;                            /* Etat à retourner            */
+    PyGILState_STATE gstate;                /* Sauvegarde d'environnement  */
+    PyObject *pyitem;                       /* Objet Python concerné #1    */
+    PyObject *pyother;                      /* Objet Python concerné #2    */
+    PyObject *pyret;                        /* Bilan de consultation       */
+    int ret;                                /* Bilan d'une conversion      */
+
+    result = false;
+
+    gstate = PyGILState_Ensure();
+
+    pyitem = pygobject_new(G_OBJECT(item));
+    pyother = pygobject_new(G_OBJECT(other));
+
+    pyret = PyObject_RichCompare(pyitem, pyother, op);
+
+    if (pyret != NULL)
+    {
+        ret = PyBool_Check(pyret);
+
+        if (ret)
+        {
+            *status = (pyret == Py_True);
+            result = true;
+        }
+
+        Py_DECREF(pyret);
+
+    }
+
+    Py_DECREF(pyother);
+    Py_DECREF(pyitem);
+
+    PyGILState_Release(gstate);
+
+    return result;
+
+}
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/*                           CONNEXION AVEC L'API DE PYTHON                           */
+/* ---------------------------------------------------------------------------------- */
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : a  = premier object Python à consulter.                      *
+*                b  = second object Python à consulter.                       *
+*                op = type de comparaison menée.                              *
+*                                                                             *
+*  Description : Effectue une comparaison avec un objet 'ComparableItem'.     *
+*                                                                             *
+*  Retour      : Bilan de l'opération.                                        *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static PyObject *py_comparable_item_richcompare(PyObject *a, PyObject *b, int op)
+{
+    PyObject *result;                       /* Bilan à retourner           */
+    int ret;                                /* Bilan de lecture des args.  */
+    GComparableItem *item_a;                /* Instance à manipuler #1     */
+    GComparableItem *item_b;                /* Instance à manipuler #2     */
+    bool valid;                             /* Indication de validité      */
+    bool status;                            /* Résultat d'une comparaison  */
+
+    ret = PyObject_IsInstance(b, (PyObject *)get_python_comparable_item_type());
+    if (!ret)
+    {
+        result = Py_NotImplemented;
+        goto cmp_done;
+    }
+
+    item_a = G_COMPARABLE_ITEM(pygobject_get(a));
+    item_b = G_COMPARABLE_ITEM(pygobject_get(b));
+
+    valid = g_comparable_item_compare_rich(item_a, item_b, op, &status);
+
+    if (valid)
+        result = status ? Py_True : Py_False;
+    else
+        result = Py_NotImplemented;
+
+ cmp_done:
+
+    Py_INCREF(result);
+
+    return result;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : -                                                            *
+*                                                                             *
+*  Description : Fournit un accès à une définition de type à diffuser.        *
+*                                                                             *
+*  Retour      : Définition d'objet pour Python.                              *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+PyTypeObject *get_python_comparable_item_type(void)
+{
+    static PyMethodDef py_comparable_item_methods[] = {
+        { NULL }
+    };
+
+    static PyGetSetDef py_comparable_item_getseters[] = {
+        { NULL }
+    };
+
+    static PyTypeObject py_comparable_item_type = {
+
+        PyVarObject_HEAD_INIT(NULL, 0)
+
+        .tp_name        = "pychrysalide.glibext.ComparableItem",
+        .tp_basicsize   = sizeof(PyObject),
+
+        .tp_flags       = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+
+        .tp_doc         = COMPARABLE_ITEM_DOC,
+
+        .tp_richcompare = py_comparable_item_richcompare,
+
+        .tp_methods     = py_comparable_item_methods,
+        .tp_getset      = py_comparable_item_getseters,
+
+    };
+
+    return &py_comparable_item_type;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : module = module dont la définition est à compléter.          *
+*                                                                             *
+*  Description : Prend en charge l'objet 'pychrysalide.....ComparableItem'.   *
+*                                                                             *
+*  Retour      : Bilan de l'opération.                                        *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+bool ensure_python_comparable_item_is_registered(void)
+{
+    PyTypeObject *type;                     /* Type Python 'ComparableItem' */
+    PyObject *module;                       /* Module à recompléter        */
+    PyObject *dict;                         /* Dictionnaire du module      */
+
+    static GInterfaceInfo info = {          /* Paramètres d'inscription    */
+
+        .interface_init = (GInterfaceInitFunc)py_comparable_item_interface_init,
+        .interface_finalize = NULL,
+        .interface_data = NULL,
+
+    };
+
+    type = get_python_comparable_item_type();
+
+    if (!PyType_HasFeature(type, Py_TPFLAGS_READY))
+    {
+        module = get_access_to_python_module("pychrysalide.glibext");
+
+        dict = PyModule_GetDict(module);
+
+        if (!register_interface_for_pygobject(dict, G_TYPE_COMPARABLE_ITEM, type, &info))
+            return false;
+
+        if (!define_comparable_item_constants(type))
+            return false;
+
+    }
+
+    return true;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : arg = argument quelconque à tenter de convertir.             *
+*                dst = destination des valeurs récupérées en cas de succès.   *
+*                                                                             *
+*  Description : Tente de convertir en élément comparable.                    *
+*                                                                             *
+*  Retour      : Bilan de l'opération, voire indications supplémentaires.     *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+int convert_to_comparable_item(PyObject *arg, void *dst)
+{
+    int result;                             /* Bilan à retourner           */
+
+    result = PyObject_IsInstance(arg, (PyObject *)get_python_comparable_item_type());
+
+    switch (result)
+    {
+        case -1:
+            /* L'exception est déjà fixée par Python */
+            result = 0;
+            break;
+
+        case 0:
+            PyErr_SetString(PyExc_TypeError, "unable to convert the provided argument to comparable item");
+            break;
+
+        case 1:
+            *((GComparableItem **)dst) = G_COMPARABLE_ITEM(pygobject_get(arg));
+            break;
+
+        default:
+            assert(false);
+            break;
+
+    }
+
+    return result;
+
+}
diff --git a/plugins/pychrysalide/glibext/comparable.h b/plugins/pychrysalide/glibext/comparable.h
new file mode 100644
index 0000000..79f7092
--- /dev/null
+++ b/plugins/pychrysalide/glibext/comparable.h
@@ -0,0 +1,45 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * comparison.h - prototypes pour l'équivalent Python du fichier "glibext/comparison.h"
+ *
+ * Copyright (C) 2018 Cyrille Bagard
+ *
+ *  This file is part of Chrysalide.
+ *
+ *  Chrysalide is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  Chrysalide is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef _PLUGINS_PYCHRYSALIDE_GLIBEXT_COMPARISON_H
+#define _PLUGINS_PYCHRYSALIDE_GLIBEXT_COMPARISON_H
+
+
+#include <Python.h>
+#include <stdbool.h>
+
+
+
+/* Fournit un accès à une définition de type à diffuser. */
+PyTypeObject *get_python_comparable_item_type(void);
+
+/* Prend en charge l'objet 'pychrysalide.glibext.ComparableItem'. */
+bool ensure_python_comparable_item_is_registered(void);
+
+/* Tente de convertir en élément comparable. */
+int convert_to_comparable_item(PyObject *, void *);
+
+
+
+#endif  /* _PLUGINS_PYCHRYSALIDE_GLIBEXT_COMPARISON_H */
diff --git a/plugins/pychrysalide/glibext/comparison.c b/plugins/pychrysalide/glibext/comparison.c
deleted file mode 100644
index 548f700..0000000
--- a/plugins/pychrysalide/glibext/comparison.c
+++ /dev/null
@@ -1,341 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * comparison.c - équivalent Python du fichier "glibext/comparison.h"
- *
- * Copyright (C) 2018-2019 Cyrille Bagard
- *
- *  This file is part of Chrysalide.
- *
- *  Chrysalide is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  Chrysalide is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "comparison.h"
-
-
-#include <pygobject.h>
-
-
-#include <glibext/comparison-int.h>
-
-
-#include "constants.h"
-#include "../access.h"
-#include "../helpers.h"
-#include "../analysis/content.h"
-
-
-
-/* ------------------------ GLUE POUR CREATION DEPUIS PYTHON ------------------------ */
-
-
-/* Procède à l'initialisation de l'interface de comparaison. */
-static void py_comparable_item_interface_init(GComparableItemIface *, gpointer *);
-
-/* Réalise une comparaison entre objets selon un critère précis. */
-static bool py_comparable_item_compare_rich(const GComparableItem *, const GComparableItem *, RichCmpOperation, bool *);
-
-
-
-/* ------------------------- CONNEXION AVEC L'API DE PYTHON ------------------------- */
-
-
-/* Effectue une comparaison avec un objet 'ComparableItem'. */
-static PyObject *py_comparable_item_richcompare(PyObject *, PyObject *, int);
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/*                          GLUE POUR CREATION DEPUIS PYTHON                          */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : iface  = interface GLib à initialiser.                       *
-*                unused = adresse non utilisée ici.                           *
-*                                                                             *
-*  Description : Procède à l'initialisation de l'interface de comparaison.    *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void py_comparable_item_interface_init(GComparableItemIface *iface, gpointer *unused)
-{
-
-#define COMPARABLE_ITEM_DOC                                                 \
-    "ComparableItem provides an interface to compare objects.\n"            \
-    "\n"                                                                    \
-    "A typical class declaration for a new implementation looks like:\n"    \
-    "\n"                                                                    \
-    "    class NewImplem(GObject.Object, ComparableItem):\n"                \
-    "        ...\n"                                                         \
-    "\n"
-
-    iface->cmp_rich = py_comparable_item_compare_rich;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : item   = premier objet à cnsulter pour une comparaison.      *
-*                other  = second objet à cnsulter pour une comparaison.       *
-*                op     = opération de comparaison à réaliser.                *
-*                status = bilan des opérations de comparaison. [OUT]          *
-*                                                                             *
-*  Description : Réalise une comparaison entre objets selon un critère précis.*
-*                                                                             *
-*  Retour      : true si la comparaison a pu être effectuée, false sinon.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static bool py_comparable_item_compare_rich(const GComparableItem *item, const GComparableItem *other, RichCmpOperation op, bool *status)
-{
-    bool result;                            /* Etat à retourner            */
-    PyGILState_STATE gstate;                /* Sauvegarde d'environnement  */
-    PyObject *pyitem;                       /* Objet Python concerné #1    */
-    PyObject *pyother;                      /* Objet Python concerné #2    */
-    PyObject *pyret;                        /* Bilan de consultation       */
-    int ret;                                /* Bilan d'une conversion      */
-
-    result = false;
-
-    gstate = PyGILState_Ensure();
-
-    pyitem = pygobject_new(G_OBJECT(item));
-    pyother = pygobject_new(G_OBJECT(other));
-
-    pyret = PyObject_RichCompare(pyitem, pyother, op);
-
-    if (pyret != NULL)
-    {
-        ret = PyBool_Check(pyret);
-
-        if (ret)
-        {
-            *status = (pyret == Py_True);
-            result = true;
-        }
-
-        Py_DECREF(pyret);
-
-    }
-
-    Py_DECREF(pyother);
-    Py_DECREF(pyitem);
-
-    PyGILState_Release(gstate);
-
-    return result;
-
-}
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/*                           CONNEXION AVEC L'API DE PYTHON                           */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : a  = premier object Python à consulter.                      *
-*                b  = second object Python à consulter.                       *
-*                op = type de comparaison menée.                              *
-*                                                                             *
-*  Description : Effectue une comparaison avec un objet 'ComparableItem'.     *
-*                                                                             *
-*  Retour      : Bilan de l'opération.                                        *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static PyObject *py_comparable_item_richcompare(PyObject *a, PyObject *b, int op)
-{
-    PyObject *result;                       /* Bilan à retourner           */
-    int ret;                                /* Bilan de lecture des args.  */
-    GComparableItem *item_a;                /* Instance à manipuler #1     */
-    GComparableItem *item_b;                /* Instance à manipuler #2     */
-    bool valid;                             /* Indication de validité      */
-    bool status;                            /* Résultat d'une comparaison  */
-
-    ret = PyObject_IsInstance(b, (PyObject *)get_python_comparable_item_type());
-    if (!ret)
-    {
-        result = Py_NotImplemented;
-        goto cmp_done;
-    }
-
-    item_a = G_COMPARABLE_ITEM(pygobject_get(a));
-    item_b = G_COMPARABLE_ITEM(pygobject_get(b));
-
-    valid = g_comparable_item_compare_rich(item_a, item_b, op, &status);
-
-    if (valid)
-        result = status ? Py_True : Py_False;
-    else
-        result = Py_NotImplemented;
-
- cmp_done:
-
-    Py_INCREF(result);
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : -                                                            *
-*                                                                             *
-*  Description : Fournit un accès à une définition de type à diffuser.        *
-*                                                                             *
-*  Retour      : Définition d'objet pour Python.                              *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-PyTypeObject *get_python_comparable_item_type(void)
-{
-    static PyMethodDef py_comparable_item_methods[] = {
-        { NULL }
-    };
-
-    static PyGetSetDef py_comparable_item_getseters[] = {
-        { NULL }
-    };
-
-    static PyTypeObject py_comparable_item_type = {
-
-        PyVarObject_HEAD_INIT(NULL, 0)
-
-        .tp_name        = "pychrysalide.glibext.ComparableItem",
-        .tp_basicsize   = sizeof(PyObject),
-
-        .tp_flags       = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-
-        .tp_doc         = COMPARABLE_ITEM_DOC,
-
-        .tp_richcompare = py_comparable_item_richcompare,
-
-        .tp_methods     = py_comparable_item_methods,
-        .tp_getset      = py_comparable_item_getseters,
-
-    };
-
-    return &py_comparable_item_type;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : module = module dont la définition est à compléter.          *
-*                                                                             *
-*  Description : Prend en charge l'objet 'pychrysalide.....ComparableItem'.   *
-*                                                                             *
-*  Retour      : Bilan de l'opération.                                        *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-bool ensure_python_comparable_item_is_registered(void)
-{
-    PyTypeObject *type;                     /* Type Python 'ComparableItem' */
-    PyObject *module;                       /* Module à recompléter        */
-    PyObject *dict;                         /* Dictionnaire du module      */
-
-    static GInterfaceInfo info = {          /* Paramètres d'inscription    */
-
-        .interface_init = (GInterfaceInitFunc)py_comparable_item_interface_init,
-        .interface_finalize = NULL,
-        .interface_data = NULL,
-
-    };
-
-    type = get_python_comparable_item_type();
-
-    if (!PyType_HasFeature(type, Py_TPFLAGS_READY))
-    {
-        module = get_access_to_python_module("pychrysalide.glibext");
-
-        dict = PyModule_GetDict(module);
-
-        if (!register_interface_for_pygobject(dict, G_TYPE_COMPARABLE_ITEM, type, &info))
-            return false;
-
-        if (!define_comparable_item_constants(type))
-            return false;
-
-    }
-
-    return true;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : arg = argument quelconque à tenter de convertir.             *
-*                dst = destination des valeurs récupérées en cas de succès.   *
-*                                                                             *
-*  Description : Tente de convertir en élément comparable.                    *
-*                                                                             *
-*  Retour      : Bilan de l'opération, voire indications supplémentaires.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-int convert_to_comparable_item(PyObject *arg, void *dst)
-{
-    int result;                             /* Bilan à retourner           */
-
-    result = PyObject_IsInstance(arg, (PyObject *)get_python_comparable_item_type());
-
-    switch (result)
-    {
-        case -1:
-            /* L'exception est déjà fixée par Python */
-            result = 0;
-            break;
-
-        case 0:
-            PyErr_SetString(PyExc_TypeError, "unable to convert the provided argument to comparable item");
-            break;
-
-        case 1:
-            *((GComparableItem **)dst) = G_COMPARABLE_ITEM(pygobject_get(arg));
-            break;
-
-        default:
-            assert(false);
-            break;
-
-    }
-
-    return result;
-
-}
diff --git a/plugins/pychrysalide/glibext/comparison.h b/plugins/pychrysalide/glibext/comparison.h
deleted file mode 100644
index 79f7092..0000000
--- a/plugins/pychrysalide/glibext/comparison.h
+++ /dev/null
@@ -1,45 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * comparison.h - prototypes pour l'équivalent Python du fichier "glibext/comparison.h"
- *
- * Copyright (C) 2018 Cyrille Bagard
- *
- *  This file is part of Chrysalide.
- *
- *  Chrysalide is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  Chrysalide is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef _PLUGINS_PYCHRYSALIDE_GLIBEXT_COMPARISON_H
-#define _PLUGINS_PYCHRYSALIDE_GLIBEXT_COMPARISON_H
-
-
-#include <Python.h>
-#include <stdbool.h>
-
-
-
-/* Fournit un accès à une définition de type à diffuser. */
-PyTypeObject *get_python_comparable_item_type(void);
-
-/* Prend en charge l'objet 'pychrysalide.glibext.ComparableItem'. */
-bool ensure_python_comparable_item_is_registered(void);
-
-/* Tente de convertir en élément comparable. */
-int convert_to_comparable_item(PyObject *, void *);
-
-
-
-#endif  /* _PLUGINS_PYCHRYSALIDE_GLIBEXT_COMPARISON_H */
diff --git a/src/glibext/comparable-int.h b/src/glibext/comparable-int.h
new file mode 100644
index 0000000..446f25d
--- /dev/null
+++ b/src/glibext/comparable-int.h
@@ -0,0 +1,58 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * comparison-int.h - définitions internes propres aux opérations de comparaison d'objets
+ *
+ * Copyright (C) 2022 Cyrille Bagard
+ *
+ *  This file is part of Chrysalide.
+ *
+ *  Chrysalide is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  Chrysalide is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with Chrysalide.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _GLIBEXT_COMPARISON_INT_H
+#define _GLIBEXT_COMPARISON_INT_H
+
+
+#include "comparison.h"
+
+
+
+/* Réalise une comparaison entre objets selon un critère précis. */
+typedef bool (* compare_rich_fc) (const GComparableItem *, const GComparableItem *, RichCmpOperation, bool *);
+
+
+/* Instance d'élément comparable (interface) */
+struct _GComparableItemIface
+{
+    GTypeInterface base_iface;              /* A laisser en premier        */
+
+    compare_rich_fc cmp_rich;               /* Comparaison de façon précise*/
+
+};
+
+
+/* Redéfinition */
+typedef GComparableItemIface GComparableItemInterface;
+
+
+/* Réalise une comparaison riche entre valeurs entière. */
+bool compare_rich_integer_values_signed(long long, long long, RichCmpOperation);
+
+/* Réalise une comparaison riche entre valeurs entière. */
+bool compare_rich_integer_values_unsigned(unsigned long long, unsigned long long, RichCmpOperation);
+
+
+
+#endif  /* _GLIBEXT_COMPARISON_INT_H */
diff --git a/src/glibext/comparable.c b/src/glibext/comparable.c
new file mode 100644
index 0000000..8ce6941
--- /dev/null
+++ b/src/glibext/comparable.c
@@ -0,0 +1,199 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * comparison.c - opérations de comparaison d'objets
+ *
+ * Copyright (C) 2022 Cyrille Bagard
+ *
+ *  This file is part of Chrysalide.
+ *
+ *  Chrysalide is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  Chrysalide is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "comparison.h"
+
+
+#include <assert.h>
+
+
+#include "comparison-int.h"
+
+
+
+/* Procède à l'initialisation de l'interface de comparaison. */
+static void g_comparable_item_default_init(GComparableItemInterface *);
+
+
+
+/* Détermine le type d'une interface pour un objet comparable. */
+G_DEFINE_INTERFACE(GComparableItem, g_comparable_item, G_TYPE_OBJECT)
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : iface = interface GLib à initialiser.                        *
+*                                                                             *
+*  Description : Procède à l'initialisation de l'interface de comparaison.    *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static void g_comparable_item_default_init(GComparableItemInterface *iface)
+{
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : item   = premier objet à consulter pour une comparaison.     *
+*                other  = second objet à consulter pour une comparaison.      *
+*                op     = opération de comparaison à réaliser.                *
+*                status = bilan des opérations de comparaison. [OUT]          *
+*                                                                             *
+*  Description : Réalise une comparaison entre objets selon un critère précis.*
+*                                                                             *
+*  Retour      : true si la comparaison a pu être effectuée, false sinon.     *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+bool g_comparable_item_compare_rich(const GComparableItem *item, const GComparableItem *other, RichCmpOperation op, bool *status)
+{
+    bool result;                            /* Etat à retourner            */
+    GComparableItemIface *iface;            /* Interface utilisée          */
+
+    iface = G_COMPARABLE_ITEM_GET_IFACE(item);
+
+    result = iface->cmp_rich(item, other, op, status);
+
+    return result;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : a  = premier élément à consulter pour une comparaison.       *
+*                b  = second objet à consulter pour une comparaison.          *
+*                op = opération de comparaison à réaliser.                    *
+*                                                                             *
+*  Description : Réalise une comparaison riche entre valeurs entière.         *
+*                                                                             *
+*  Retour      : Bilan des opérations de comparaison.                         *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+bool compare_rich_integer_values_signed(long long a, long long b, RichCmpOperation op)
+{
+    bool result;                            /* Bilan  à retourner          */
+
+    switch (op)
+    {
+        case RCO_LT:
+            result = (a < b);
+            break;
+
+        case RCO_LE:
+            result = (a <= b);
+            break;
+
+        case RCO_EQ:
+            result = (a == b);
+            break;
+
+        case RCO_NE:
+            result = (a != b);
+            break;
+
+        case RCO_GT:
+            result = (a > b);
+            break;
+
+        case RCO_GE:
+            result = (a >= b);
+            break;
+
+        default:
+            assert(false);
+            result = false;
+            break;
+
+    }
+
+    return result;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : a  = premier élément à consulter pour une comparaison.       *
+*                b  = second objet à consulter pour une comparaison.          *
+*                op = opération de comparaison à réaliser.                    *
+*                                                                             *
+*  Description : Réalise une comparaison riche entre valeurs entière.         *
+*                                                                             *
+*  Retour      : Bilan des opérations de comparaison.                         *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+bool compare_rich_integer_values_unsigned(unsigned long long a, unsigned long long b, RichCmpOperation op)
+{
+    bool result;                            /* Bilan  à retourner          */
+
+    switch (op)
+    {
+        case RCO_LT:
+            result = (a < b);
+            break;
+
+        case RCO_LE:
+            result = (a <= b);
+            break;
+
+        case RCO_EQ:
+            result = (a == b);
+            break;
+
+        case RCO_NE:
+            result = (a != b);
+            break;
+
+        case RCO_GT:
+            result = (a > b);
+            break;
+
+        case RCO_GE:
+            result = (a >= b);
+            break;
+
+        default:
+            assert(false);
+            result = false;
+            break;
+
+    }
+
+    return result;
+
+}
diff --git a/src/glibext/comparable.h b/src/glibext/comparable.h
new file mode 100644
index 0000000..8d43210
--- /dev/null
+++ b/src/glibext/comparable.h
@@ -0,0 +1,80 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * comparison.h - prototypes pour les opérations de comparaison d'objets
+ *
+ * Copyright (C) 2022 Cyrille Bagard
+ *
+ *  This file is part of Chrysalide.
+ *
+ *  Chrysalide is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  Chrysalide is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _GLIBEXT_COMPARISON_H
+#define _GLIBEXT_COMPARISON_H
+
+
+#include <glib-object.h>
+#include <stdbool.h>
+
+
+
+#define G_TYPE_COMPARABLE_ITEM             (g_comparable_item_get_type())
+#define G_COMPARABLE_ITEM(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_COMPARABLE_ITEM, GComparableItem))
+#define G_COMPARABLE_ITEM_CLASS(vtable)    (G_TYPE_CHECK_CLASS_CAST((vtable), G_TYPE_COMPARABLE_ITEM, GComparableItemIface))
+#define G_IS_COMPARABLE_ITEM(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_COMPARABLE_ITEM))
+#define G_IS_COMPARABLE_ITEM_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE((vtable), G_TYPE_COMPARABLE_ITEM))
+#define G_COMPARABLE_ITEM_GET_IFACE(inst)  (G_TYPE_INSTANCE_GET_INTERFACE((inst), G_TYPE_COMPARABLE_ITEM, GComparableItemIface))
+
+
+/* Instance d'élément comparable (coquille vide) */
+typedef struct _GComparableItem GComparableItem;
+
+/* Instance d'élément comparable (interface) */
+typedef struct _GComparableItemIface GComparableItemIface;
+
+
+/* Modes de comparaison */
+typedef enum _RichCmpOperation
+{
+    RCO_LT,                                 /* Equivalent de '<'           */
+    RCO_LE,                                 /* Equivalent de '<='          */
+    RCO_EQ,                                 /* Equivalent de '=='          */
+    RCO_NE,                                 /* Equivalent de '!='          */
+    RCO_GT,                                 /* Equivalent de '>'           */
+    RCO_GE,                                 /* Equivalent de '>°'          */
+
+} RichCmpOperation;
+
+/* Détermination d'un besoin de comparaison supplémentaire */
+#define STATUS_NOT_EQUAL(_s, _o)                            \
+    ({                                                      \
+        bool __result;                                      \
+        if (_o == RCO_LE || _o == RCO_EQ || _o == RCO_GE)   \
+            __result = !_s;                                 \
+        else                                                \
+            __result = _s;                                  \
+        __result;                                           \
+    })
+
+
+/* Détermine le type d'une interface pour un objet comparable. */
+GType g_comparable_item_get_type(void) G_GNUC_CONST;
+
+/* Réalise une comparaison entre objets selon un critère précis. */
+bool g_comparable_item_compare_rich(const GComparableItem *, const GComparableItem *, RichCmpOperation, bool *);
+
+
+
+#endif  /* _GLIBEXT_COMPARISON_H */
diff --git a/src/glibext/comparison-int.h b/src/glibext/comparison-int.h
deleted file mode 100644
index 446f25d..0000000
--- a/src/glibext/comparison-int.h
+++ /dev/null
@@ -1,58 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * comparison-int.h - définitions internes propres aux opérations de comparaison d'objets
- *
- * Copyright (C) 2022 Cyrille Bagard
- *
- *  This file is part of Chrysalide.
- *
- *  Chrysalide is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  Chrysalide is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with Chrysalide.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef _GLIBEXT_COMPARISON_INT_H
-#define _GLIBEXT_COMPARISON_INT_H
-
-
-#include "comparison.h"
-
-
-
-/* Réalise une comparaison entre objets selon un critère précis. */
-typedef bool (* compare_rich_fc) (const GComparableItem *, const GComparableItem *, RichCmpOperation, bool *);
-
-
-/* Instance d'élément comparable (interface) */
-struct _GComparableItemIface
-{
-    GTypeInterface base_iface;              /* A laisser en premier        */
-
-    compare_rich_fc cmp_rich;               /* Comparaison de façon précise*/
-
-};
-
-
-/* Redéfinition */
-typedef GComparableItemIface GComparableItemInterface;
-
-
-/* Réalise une comparaison riche entre valeurs entière. */
-bool compare_rich_integer_values_signed(long long, long long, RichCmpOperation);
-
-/* Réalise une comparaison riche entre valeurs entière. */
-bool compare_rich_integer_values_unsigned(unsigned long long, unsigned long long, RichCmpOperation);
-
-
-
-#endif  /* _GLIBEXT_COMPARISON_INT_H */
diff --git a/src/glibext/comparison.c b/src/glibext/comparison.c
deleted file mode 100644
index 8ce6941..0000000
--- a/src/glibext/comparison.c
+++ /dev/null
@@ -1,199 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * comparison.c - opérations de comparaison d'objets
- *
- * Copyright (C) 2022 Cyrille Bagard
- *
- *  This file is part of Chrysalide.
- *
- *  Chrysalide is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  Chrysalide is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#include "comparison.h"
-
-
-#include <assert.h>
-
-
-#include "comparison-int.h"
-
-
-
-/* Procède à l'initialisation de l'interface de comparaison. */
-static void g_comparable_item_default_init(GComparableItemInterface *);
-
-
-
-/* Détermine le type d'une interface pour un objet comparable. */
-G_DEFINE_INTERFACE(GComparableItem, g_comparable_item, G_TYPE_OBJECT)
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : iface = interface GLib à initialiser.                        *
-*                                                                             *
-*  Description : Procède à l'initialisation de l'interface de comparaison.    *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_comparable_item_default_init(GComparableItemInterface *iface)
-{
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : item   = premier objet à consulter pour une comparaison.     *
-*                other  = second objet à consulter pour une comparaison.      *
-*                op     = opération de comparaison à réaliser.                *
-*                status = bilan des opérations de comparaison. [OUT]          *
-*                                                                             *
-*  Description : Réalise une comparaison entre objets selon un critère précis.*
-*                                                                             *
-*  Retour      : true si la comparaison a pu être effectuée, false sinon.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-bool g_comparable_item_compare_rich(const GComparableItem *item, const GComparableItem *other, RichCmpOperation op, bool *status)
-{
-    bool result;                            /* Etat à retourner            */
-    GComparableItemIface *iface;            /* Interface utilisée          */
-
-    iface = G_COMPARABLE_ITEM_GET_IFACE(item);
-
-    result = iface->cmp_rich(item, other, op, status);
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : a  = premier élément à consulter pour une comparaison.       *
-*                b  = second objet à consulter pour une comparaison.          *
-*                op = opération de comparaison à réaliser.                    *
-*                                                                             *
-*  Description : Réalise une comparaison riche entre valeurs entière.         *
-*                                                                             *
-*  Retour      : Bilan des opérations de comparaison.                         *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-bool compare_rich_integer_values_signed(long long a, long long b, RichCmpOperation op)
-{
-    bool result;                            /* Bilan  à retourner          */
-
-    switch (op)
-    {
-        case RCO_LT:
-            result = (a < b);
-            break;
-
-        case RCO_LE:
-            result = (a <= b);
-            break;
-
-        case RCO_EQ:
-            result = (a == b);
-            break;
-
-        case RCO_NE:
-            result = (a != b);
-            break;
-
-        case RCO_GT:
-            result = (a > b);
-            break;
-
-        case RCO_GE:
-            result = (a >= b);
-            break;
-
-        default:
-            assert(false);
-            result = false;
-            break;
-
-    }
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : a  = premier élément à consulter pour une comparaison.       *
-*                b  = second objet à consulter pour une comparaison.          *
-*                op = opération de comparaison à réaliser.                    *
-*                                                                             *
-*  Description : Réalise une comparaison riche entre valeurs entière.         *
-*                                                                             *
-*  Retour      : Bilan des opérations de comparaison.                         *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-bool compare_rich_integer_values_unsigned(unsigned long long a, unsigned long long b, RichCmpOperation op)
-{
-    bool result;                            /* Bilan  à retourner          */
-
-    switch (op)
-    {
-        case RCO_LT:
-            result = (a < b);
-            break;
-
-        case RCO_LE:
-            result = (a <= b);
-            break;
-
-        case RCO_EQ:
-            result = (a == b);
-            break;
-
-        case RCO_NE:
-            result = (a != b);
-            break;
-
-        case RCO_GT:
-            result = (a > b);
-            break;
-
-        case RCO_GE:
-            result = (a >= b);
-            break;
-
-        default:
-            assert(false);
-            result = false;
-            break;
-
-    }
-
-    return result;
-
-}
diff --git a/src/glibext/comparison.h b/src/glibext/comparison.h
deleted file mode 100644
index 8d43210..0000000
--- a/src/glibext/comparison.h
+++ /dev/null
@@ -1,80 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * comparison.h - prototypes pour les opérations de comparaison d'objets
- *
- * Copyright (C) 2022 Cyrille Bagard
- *
- *  This file is part of Chrysalide.
- *
- *  Chrysalide is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  Chrysalide is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef _GLIBEXT_COMPARISON_H
-#define _GLIBEXT_COMPARISON_H
-
-
-#include <glib-object.h>
-#include <stdbool.h>
-
-
-
-#define G_TYPE_COMPARABLE_ITEM             (g_comparable_item_get_type())
-#define G_COMPARABLE_ITEM(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_COMPARABLE_ITEM, GComparableItem))
-#define G_COMPARABLE_ITEM_CLASS(vtable)    (G_TYPE_CHECK_CLASS_CAST((vtable), G_TYPE_COMPARABLE_ITEM, GComparableItemIface))
-#define G_IS_COMPARABLE_ITEM(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_COMPARABLE_ITEM))
-#define G_IS_COMPARABLE_ITEM_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE((vtable), G_TYPE_COMPARABLE_ITEM))
-#define G_COMPARABLE_ITEM_GET_IFACE(inst)  (G_TYPE_INSTANCE_GET_INTERFACE((inst), G_TYPE_COMPARABLE_ITEM, GComparableItemIface))
-
-
-/* Instance d'élément comparable (coquille vide) */
-typedef struct _GComparableItem GComparableItem;
-
-/* Instance d'élément comparable (interface) */
-typedef struct _GComparableItemIface GComparableItemIface;
-
-
-/* Modes de comparaison */
-typedef enum _RichCmpOperation
-{
-    RCO_LT,                                 /* Equivalent de '<'           */
-    RCO_LE,                                 /* Equivalent de '<='          */
-    RCO_EQ,                                 /* Equivalent de '=='          */
-    RCO_NE,                                 /* Equivalent de '!='          */
-    RCO_GT,                                 /* Equivalent de '>'           */
-    RCO_GE,                                 /* Equivalent de '>°'          */
-
-} RichCmpOperation;
-
-/* Détermination d'un besoin de comparaison supplémentaire */
-#define STATUS_NOT_EQUAL(_s, _o)                            \
-    ({                                                      \
-        bool __result;                                      \
-        if (_o == RCO_LE || _o == RCO_EQ || _o == RCO_GE)   \
-            __result = !_s;                                 \
-        else                                                \
-            __result = _s;                                  \
-        __result;                                           \
-    })
-
-
-/* Détermine le type d'une interface pour un objet comparable. */
-GType g_comparable_item_get_type(void) G_GNUC_CONST;
-
-/* Réalise une comparaison entre objets selon un critère précis. */
-bool g_comparable_item_compare_rich(const GComparableItem *, const GComparableItem *, RichCmpOperation, bool *);
-
-
-
-#endif  /* _GLIBEXT_COMPARISON_H */
-- 
cgit v0.11.2-87-g4458