From 71367e25e95b90b34891ec88083a52e0e0f60f13 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Sun, 12 Jan 2025 20:51:22 +0100
Subject: Delete the now useless dynamic GTypes support and old plugin system
 code.

---
 plugins/pe/python/format.c                |   1 -
 plugins/pychrysalide/glibext/singleton.c  |  64 +---
 plugins/pychrysalide/glibext/strbuilder.c |   1 -
 plugins/pychrysalide/plugins/constants.c  | 147 --------
 plugins/pychrysalide/plugins/constants.h  |  41 ---
 plugins/pychrysalide/plugins/plugin.c     |   1 -
 plugins/pychrysalide/plugins/translate.c  | 110 ------
 plugins/pychrysalide/plugins/translate.h  |  41 ---
 src/plugins/Makefile.am                   |   1 -
 src/plugins/dt.c                          | 562 ------------------------------
 src/plugins/dt.h                          |  50 ---
 src/plugins/pglist.c                      |   6 +-
 src/plugins/plugin.c                      |   1 -
 13 files changed, 2 insertions(+), 1024 deletions(-)
 delete mode 100644 plugins/pychrysalide/plugins/constants.c
 delete mode 100644 plugins/pychrysalide/plugins/constants.h
 delete mode 100644 plugins/pychrysalide/plugins/translate.c
 delete mode 100644 plugins/pychrysalide/plugins/translate.h
 delete mode 100644 src/plugins/dt.c
 delete mode 100644 src/plugins/dt.h

diff --git a/plugins/pe/python/format.c b/plugins/pe/python/format.c
index 1c64b7a..71d3305 100644
--- a/plugins/pe/python/format.c
+++ b/plugins/pe/python/format.c
@@ -28,7 +28,6 @@
 #include <pygobject.h>
 
 
-#include <plugins/dt.h>
 #include <plugins/pychrysalide/helpers.h>
 #include <plugins/pychrysalide/analysis/content.h>
 #include <plugins/pychrysalide/format/executable.h>
diff --git a/plugins/pychrysalide/glibext/singleton.c b/plugins/pychrysalide/glibext/singleton.c
index 61d6723..ca847de 100644
--- a/plugins/pychrysalide/glibext/singleton.c
+++ b/plugins/pychrysalide/glibext/singleton.c
@@ -30,7 +30,6 @@
 
 
 #include <glibext/singleton-int.h>
-#include <plugins/dt.h>
 
 
 #include "../access.h"
@@ -70,8 +69,7 @@ static PyObject *py_singleton_candidate_richcompare(PyObject *, PyObject *, int)
 /* ------------------------- COLLECTION D'INSTANCES UNIQUES ------------------------- */
 
 
-/* Accompagne la création d'une instance dérivée en Python. */
-static PyObject *py_singleton_factory_new(PyTypeObject *, PyObject *, PyObject *);
+CREATE_DYN_CONSTRUCTOR(singleton_factory, G_TYPE_SINGLETON_FACTORY);
 
 /* Initialise une instance sur la base du dérivé de GObject. */
 static int py_singleton_factory_init(PyObject *, PyObject *, PyObject *);
@@ -722,66 +720,6 @@ int convert_to_singleton_candidate(PyObject *arg, void *dst)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : type = type du nouvel objet à mettre en place.               *
-*                args = éventuelle liste d'arguments.                         *
-*                kwds = éventuel dictionnaire de valeurs mises à disposition. *
-*                                                                             *
-*  Description : Accompagne la création d'une instance dérivée en Python.     *
-*                                                                             *
-*  Retour      : Nouvel objet Python mis en place ou NULL en cas d'échec.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static PyObject *py_singleton_factory_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *result;                       /* Objet à retourner           */
-    PyTypeObject *base;                     /* Type de base à dériver      */
-    bool first_time;                        /* Evite les multiples passages*/
-    GType gtype;                            /* Nouveau type de processeur  */
-    bool status;                            /* Bilan d'un enregistrement   */
-
-    /* Validations diverses */
-
-    base = get_python_singleton_factory_type();
-
-    if (type == base)
-        goto simple_way;
-
-    /* Mise en place d'un type dédié */
-
-    first_time = (g_type_from_name(type->tp_name) == 0);
-
-    gtype = build_dynamic_type(G_TYPE_SINGLETON_FACTORY, type->tp_name, NULL, NULL, NULL);
-
-    if (first_time)
-    {
-        status = register_class_for_dynamic_pygobject(gtype, type);
-
-        if (!status)
-        {
-            result = NULL;
-            goto exit;
-        }
-
-    }
-
-    /* On crée, et on laisse ensuite la main à PyGObject_Type.tp_init() */
-
- simple_way:
-
-    result = PyType_GenericNew(type, args, kwds);
-
- exit:
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
 *  Paramètres  : self = objet à initialiser (théoriquement).                  *
 *                args = arguments fournis à l'appel.                          *
 *                kwds = arguments de type key=val fournis.                    *
diff --git a/plugins/pychrysalide/glibext/strbuilder.c b/plugins/pychrysalide/glibext/strbuilder.c
index 7c306f4..482f7df 100644
--- a/plugins/pychrysalide/glibext/strbuilder.c
+++ b/plugins/pychrysalide/glibext/strbuilder.c
@@ -30,7 +30,6 @@
 
 
 #include <glibext/strbuilder-int.h>
-#include <plugins/dt.h>
 
 
 #include "../access.h"
diff --git a/plugins/pychrysalide/plugins/constants.c b/plugins/pychrysalide/plugins/constants.c
deleted file mode 100644
index 7e20e4c..0000000
--- a/plugins/pychrysalide/plugins/constants.c
+++ /dev/null
@@ -1,147 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * constants.c - ajout des constantes principales
- *
- * Copyright (C) 2020 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 "constants.h"
-
-
-#include <plugins/plugin-def.h>
-
-
-#include "../helpers.h"
-
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : type = type dont le dictionnaire est à compléter.            *
-*                                                                             *
-*  Description : Définit les constantes relatives aux greffons Python.        *
-*                                                                             *
-*  Retour      : true en cas de succès de l'opération, false sinon.           *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-bool define_plugin_module_constants(PyTypeObject *type)
-{
-    bool result;                            /* Bilan à retourner           */
-    PyObject *values;                       /* Groupe de valeurs à établir */
-
-    result = true;
-
-    values = PyDict_New();
-
-    if (result) result = add_const_to_group(values, "BASIC_NONE", PGA_BASIC_NONE);
-    if (result) result = add_const_to_group(values, "PLUGIN_INIT", PGA_PLUGIN_INIT);
-    if (result) result = add_const_to_group(values, "PLUGIN_LOADED", PGA_PLUGIN_LOADED);
-    if (result) result = add_const_to_group(values, "PLUGIN_EXIT", PGA_PLUGIN_EXIT);
-    if (result) result = add_const_to_group(values, "NATIVE_PLUGINS_LOADED", PGA_NATIVE_PLUGINS_LOADED);
-    if (result) result = add_const_to_group(values, "ALL_PLUGINS_LOADED", PGA_ALL_PLUGINS_LOADED);
-    if (result) result = add_const_to_group(values, "TYPE_BUILDING", PGA_TYPE_BUILDING);
-    if (result) result = add_const_to_group(values, "GUI_THEME", PGA_GUI_THEME);
-    if (result) result = add_const_to_group(values, "PANEL_CREATION", PGA_PANEL_CREATION);
-    if (result) result = add_const_to_group(values, "PANEL_DOCKING", PGA_PANEL_DOCKING);
-    if (result) result = add_const_to_group(values, "CONTENT_EXPLORER", PGA_CONTENT_EXPLORER);
-    if (result) result = add_const_to_group(values, "CONTENT_RESOLVER", PGA_CONTENT_RESOLVER);
-    if (result) result = add_const_to_group(values, "CONTENT_ANALYZED", PGA_CONTENT_ANALYZED);
-    if (result) result = add_const_to_group(values, "FORMAT_ANALYSIS_STARTED", PGA_FORMAT_ANALYSIS_STARTED);
-    if (result) result = add_const_to_group(values, "FORMAT_PRELOAD", PGA_FORMAT_PRELOAD);
-    if (result) result = add_const_to_group(values, "FORMAT_ATTACH_DEBUG", PGA_FORMAT_ATTACH_DEBUG);
-    if (result) result = add_const_to_group(values, "FORMAT_ANALYSIS_ENDED", PGA_FORMAT_ANALYSIS_ENDED);
-    if (result) result = add_const_to_group(values, "FORMAT_POST_ANALYSIS_STARTED", PGA_FORMAT_POST_ANALYSIS_STARTED);
-    if (result) result = add_const_to_group(values, "FORMAT_POST_ANALYSIS_ENDED", PGA_FORMAT_POST_ANALYSIS_ENDED);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_STARTED", PGA_DISASSEMBLY_STARTED);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_RAW", PGA_DISASSEMBLY_RAW);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_HOOKED_LINK", PGA_DISASSEMBLY_HOOKED_LINK);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_HOOKED_POST", PGA_DISASSEMBLY_HOOKED_POST);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_LIMITED", PGA_DISASSEMBLY_LIMITED);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_LOOPS", PGA_DISASSEMBLY_LOOPS);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_LINKED", PGA_DISASSEMBLY_LINKED);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_GROUPED", PGA_DISASSEMBLY_GROUPED);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_RANKED", PGA_DISASSEMBLY_RANKED);
-    if (result) result = add_const_to_group(values, "DISASSEMBLY_ENDED", PGA_DISASSEMBLY_ENDED);
-    if (result) result = add_const_to_group(values, "DETECTION_OBFUSCATORS", PGA_DETECTION_OBFUSCATORS);
-
-    if (!result)
-    {
-        Py_DECREF(values);
-        goto exit;
-    }
-
-    result = attach_constants_group_to_type(type, true, "PluginAction", values,
-                                            "Features with which plugins can extend the core of Chrysalide.");
-
- exit:
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  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 constante PluginAction.                *
-*                                                                             *
-*  Retour      : Bilan de l'opération, voire indications supplémentaires.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-int convert_to_plugin_action(PyObject *arg, void *dst)
-{
-    int result;                             /* Bilan à retourner           */
-    unsigned long value;                    /* Valeur récupérée            */
-
-    result = PyObject_IsInstance(arg, (PyObject *)&PyLong_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 PluginAction");
-            break;
-
-        case 1:
-            value = PyLong_AsUnsignedLong(arg);
-            *((PluginAction *)dst) = value;
-            break;
-
-        default:
-            assert(false);
-            break;
-
-    }
-
-    return result;
-
-}
diff --git a/plugins/pychrysalide/plugins/constants.h b/plugins/pychrysalide/plugins/constants.h
deleted file mode 100644
index 56612c9..0000000
--- a/plugins/pychrysalide/plugins/constants.h
+++ /dev/null
@@ -1,41 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * constants.h - prototypes pour l'ajout des constantes principales
- *
- * Copyright (C) 2020 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_PLUGINS_CONSTANTS_H
-#define _PLUGINS_PYCHRYSALIDE_PLUGINS_CONSTANTS_H
-
-
-#include <Python.h>
-#include <stdbool.h>
-
-
-/* Définit les constantes relatives aux greffons Python. */
-bool define_plugin_module_constants(PyTypeObject *);
-
-/* Tente de convertir en constante PluginAction. */
-int convert_to_plugin_action(PyObject *, void *);
-
-
-
-#endif  /* _PLUGINS_PYCHRYSALIDE_PLUGINS_CONSTANTS_H */
diff --git a/plugins/pychrysalide/plugins/plugin.c b/plugins/pychrysalide/plugins/plugin.c
index 48cc992..d80c79e 100644
--- a/plugins/pychrysalide/plugins/plugin.c
+++ b/plugins/pychrysalide/plugins/plugin.c
@@ -31,7 +31,6 @@
 
 
 #include <common/compiler.h>
-#include <plugins/dt.h>
 #include <plugins/plugin-int.h>
 #include <plugins/pglist.h>
 #include <plugins/self.h>
diff --git a/plugins/pychrysalide/plugins/translate.c b/plugins/pychrysalide/plugins/translate.c
deleted file mode 100644
index 055788c..0000000
--- a/plugins/pychrysalide/plugins/translate.c
+++ /dev/null
@@ -1,110 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * translate.c - conversion de structures liées aux greffons en objets Python
- *
- * Copyright (C) 2021 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 "translate.h"
-
-
-#include <assert.h>
-
-
-#include "plugin.h"
-#include "../helpers.h"
-#include "../struct.h"
-
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : iface = ensemble d'informations à transcrire en Python.      *
-*                                                                             *
-*  Description : Traduit une description d'interface de greffon.              *
-*                                                                             *
-*  Retour      : Structure mise en place ou NULL en cas d'erreur.             *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-PyObject *translate_plugin_interface_to_python(const plugin_interface *iface)
-{
-    PyObject *result;                       /* Construction à retourner    */
-    PyTypeObject *base;                     /* Modèle d'objet à créer      */
-    bool status;                            /* Bilan d'une traduction      */
-    PyObject *array;                        /* Tableau à insérer           */
-    size_t i;                               /* Boucle de parcours          */
-    PyTypeObject *itype;                    /* Type d'élément à créer      */
-    PyObject *item;                         /* Elément mis en place        */
-
-    base = get_python_py_struct_type();
-
-    result = PyObject_CallFunction((PyObject *)base, NULL);
-    assert(result != NULL);
-
-    status = true;
-
-    if (status) status = TRANSLATE_STRING_FIELD(result, iface, gtp_name);
-    if (status) status = TRANSLATE_STRING_FIELD(result, iface, name);
-    if (status) status = TRANSLATE_STRING_FIELD(result, iface, desc);
-    if (status) status = TRANSLATE_STRING_FIELD(result, iface, version);
-    if (status) status = TRANSLATE_STRING_FIELD(result, iface, url);
-
-    if (status) status = TRANSLATE_BOOLEAN_FIELD(result, iface, container);
-
-    if (status) status = TRANSLATE_ARRAY_FIELD(result, iface, required, &array);
-
-    if (status)
-    {
-        itype = get_python_plugin_module_type();
-
-        for (i = 0; i < iface->required_count; i++)
-        {
-            item = PyUnicode_FromString(iface->required[i]);
-            PyTuple_SetItem(array, i, item);
-        }
-
-    }
-
-    if (status) status = TRANSLATE_ARRAY_FIELD(result, iface, actions, &array);
-
-    if (status)
-    {
-        itype = get_python_plugin_module_type();
-
-        for (i = 0; i < iface->actions_count; i++)
-        {
-            item = cast_with_constants_group_from_type(itype, "PluginAction", iface->actions[i]);
-            PyTuple_SetItem(array, i, item);
-        }
-
-    }
-
-    if (!status)
-    {
-        Py_DECREF(result);
-        result = NULL;
-    }
-
-    return result;
-
-}
diff --git a/plugins/pychrysalide/plugins/translate.h b/plugins/pychrysalide/plugins/translate.h
deleted file mode 100644
index facffd2..0000000
--- a/plugins/pychrysalide/plugins/translate.h
+++ /dev/null
@@ -1,41 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * translate.h - prototypes pour la conversion de structures liées aux greffons en objets Python
- *
- * Copyright (C) 2021 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_PLUGINS_TRANSLATE_H
-#define _PLUGINS_PYCHRYSALIDE_PLUGINS_TRANSLATE_H
-
-
-#include <Python.h>
-
-
-#include <plugins/plugin-def.h>
-
-
-
-/* Traduit une description d'interface de greffon. */
-PyObject *translate_plugin_interface_to_python(const plugin_interface *);
-
-
-
-#endif  /* _PLUGINS_PYCHRYSALIDE_PLUGINS_TRANSLATE_H */
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 555c449..7d375e3 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -2,7 +2,6 @@
 noinst_LTLIBRARIES = libplugins.la
 
 libplugins_la_SOURCES =						\
-	dt.h dt.c								\
 	manager-int.h							\
 	manager.h manager.c						\
 	native-int.h							\
diff --git a/src/plugins/dt.c b/src/plugins/dt.c
deleted file mode 100644
index 9de0553..0000000
--- a/src/plugins/dt.c
+++ /dev/null
@@ -1,562 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * dt.c - possibilité de créer de nouveaux types de façon dynamique
- *
- * Copyright (C) 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 Chrysalide.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#include "dt.h"
-
-
-#include <assert.h>
-#include <malloc.h>
-#include <string.h>
-
-
-#include "pglist.h"
-
-
-
-/* ------------------------- MODULE DE GESTION DES NOUVEAUX ------------------------- */
-
-
-#define G_TYPE_DYNAMIC_TYPES            g_dynamic_types_get_type()
-#define G_DYNAMIC_TYPES(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_DYNAMIC_TYPES, GDynamicTypes))
-#define G_IS_DYNAMIC_TYPES(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_DYNAMIC_TYPES))
-#define G_DYNAMIC_TYPES_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_DYNAMIC_TYPES, GDynamicTypesClass))
-#define G_IS_DYNAMIC_TYPES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_DYNAMIC_TYPES))
-#define G_DYNAMIC_TYPES_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_DYNAMIC_TYPES, GDynamicTypesClass))
-
-
-/* Mémorisation des caractéristiques de type */
-typedef struct _type_dyn_info_t
-{
-    GType type;                             /* Identifiant unique obtenu   */
-
-    GClassInitFunc cinit;                   /* Phase d'initialisation #1   */
-    gconstpointer data;                     /* Eventuelles données utiles  */
-
-    GInstanceInitFunc init;                 /* Phase d'initialisation #2   */
-
-} type_dyn_info_t;
-
-/* Description de fichier binaire (instance) */
-typedef struct _GDynamicTypes
-{
-    GObject parent;                         /* A laisser en premier        */
-
-    type_dyn_info_t **info;                 /* Liste d'informations utiles */
-    size_t count;                           /* Taille de cette liste       */
-
-} GDynamicTypes;
-
-/* Description de fichier binaire (classe) */
-typedef struct _GDynamicTypesClass
-{
-    GObjectClass parent;                    /* A laisser en premier        */
-
-} GDynamicTypesClass;
-
-
-/* Indique le type défini pour une gestion de types dynamique. */
-static GType g_dynamic_types_get_type(void);
-
-/* Initialise la classe de gestion de types dynamique. */
-static void g_dynamic_types_class_init(GDynamicTypesClass *);
-
-/* Initialise une gestion de types dynamique. */
-static void g_dynamic_types_init(GDynamicTypes *);
-
-/* Procède à l'initialisation de l'interface de typage nouveau. */
-static void g_dynamic_types_interface_init(GTypePluginClass *);
-
-/* Supprime toutes les références externes. */
-static void g_dynamic_types_dispose(GDynamicTypes *);
-
-/* Procède à la libération totale de la mémoire. */
-static void g_dynamic_types_finalize(GDynamicTypes *);
-
-/* Crée un nouveau gestionnaire de nouveaux types. */
-static GDynamicTypes *g_dynamic_types_new(void);
-
-/* Marque une augmentation des utilisations. */
-static void g_dynamic_types_use(GDynamicTypes *);
-
-/* Marque une diminution des utilisations. */
-static void g_dynamic_types_unuse(GDynamicTypes *);
-
-/* Complète la définition d'un type dynamiquement. */
-static void g_dynamic_types_complete_type(GDynamicTypes *, GType, GTypeInfo *, GTypeValueTable *);
-
-/* Retrouve les informations concernant un type dynamique. */
-static type_dyn_info_t *g_dynamic_types_find(const GDynamicTypes *, GType);
-
-/* Fournit un identifiant GLib pour un nouveau type. */
-static GType g_dynamic_types_register_type(GDynamicTypes *, GType, const char *, GClassInitFunc, gconstpointer, GInstanceInitFunc);
-
-
-
-/* ----------------------- ACCOMPAGNEMENTS DES NOUVEAUX TYPES ----------------------- */
-
-
-/* Encadrement des nouveaux types dérivés */
-static GDynamicTypes *_chrysalide_dtypes = NULL;
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/*                           MODULE DE GESTION DES NOUVEAUX                           */
-/* ---------------------------------------------------------------------------------- */
-
-/* Indique le type défini pour une gestion de types dynamique. */
-G_DEFINE_TYPE_WITH_CODE(GDynamicTypes, g_dynamic_types, G_TYPE_OBJECT,
-                        G_IMPLEMENT_INTERFACE(G_TYPE_TYPE_PLUGIN, g_dynamic_types_interface_init));
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : klass = classe à initialiser.                                *
-*                                                                             *
-*  Description : Initialise la classe de gestion de types dynamique.          *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_class_init(GDynamicTypesClass *klass)
-{
-    GObjectClass *object;                   /* Autre version de la classe  */
-
-    object = G_OBJECT_CLASS(klass);
-
-    object->dispose = (GObjectFinalizeFunc/* ! */)g_dynamic_types_dispose;
-    object->finalize = (GObjectFinalizeFunc)g_dynamic_types_finalize;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : types = instance à initialiser.                              *
-*                                                                             *
-*  Description : Initialise une gestion de types dynamique.                   *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_init(GDynamicTypes *types)
-{
-
-}
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : iface = interface GLib à initialiser.                        *
-*                                                                             *
-*  Description : Procède à l'initialisation de l'interface de typage nouveau. *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_interface_init(GTypePluginClass *iface)
-{
-    iface->use_plugin = (GTypePluginUse)g_dynamic_types_use;
-    iface->unuse_plugin = (GTypePluginUnuse)g_dynamic_types_unuse;
-    iface->complete_type_info = (GTypePluginCompleteTypeInfo)g_dynamic_types_complete_type;
-
-}
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : types = instance d'objet GLib à traiter.                     *
-*                                                                             *
-*  Description : Supprime toutes les références externes.                     *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_dispose(GDynamicTypes *types)
-{
-    size_t i;                               /* Boucle de parcours          */
-    type_dyn_info_t *info;                  /* Information à exploiter     */
-    gpointer g_class;                       /* Classe à oublier            */
-
-    for (i = 0; i < types->count; i++)
-    {
-        info = types->info[i];
-
-        if (info->type != G_TYPE_INVALID)
-        {
-            g_class = g_type_class_peek(info->type);
-
-            /**
-             * Constat est fait qu'un type implémenté en Python mais dont les
-             * instanciations conduisent toutes à des exceptions n'est pas
-             * associé à une classe à ce moment d'exécution.
-             *
-             * Cf. fonction testKnownFormatConstructor() de la suite de tests
-             *
-             * Cf. documentation de g_type_class_unref() également :
-             *
-             *    """
-             *    Once the last reference count of a class has been released,
-             *    classes may be finalized by the type system
-             *    """
-             */
-
-            if (g_class != NULL)
-                g_type_class_unref(g_class);
-
-            info->type = G_TYPE_INVALID;
-
-        }
-
-    }
-
-    G_OBJECT_CLASS(g_dynamic_types_parent_class)->dispose(G_OBJECT(types));
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : types = instance d'objet GLib à traiter.                     *
-*                                                                             *
-*  Description : Procède à la libération totale de la mémoire.                *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_finalize(GDynamicTypes *types)
-{
-    size_t i;                               /* Boucle de parcours          */
-
-    for (i = 0; i < types->count; i++)
-        free(types->info[i]);
-
-    if (types->info != NULL)
-        free(types->info);
-
-    G_OBJECT_CLASS(g_dynamic_types_parent_class)->finalize(G_OBJECT(types));
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : -                                                            *
-*                                                                             *
-*  Description : Crée un nouveau gestionnaire de nouveaux types.              *
-*                                                                             *
-*  Retour      : Instance mise en place.                                      *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static GDynamicTypes *g_dynamic_types_new(void)
-{
-    GDynamicTypes *result;                  /* Adresse à retourner         */
-
-    result = g_object_new(G_TYPE_DYNAMIC_TYPES, NULL);
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : types = gestionnaire de types courant.                       *
-*                                                                             *
-*  Description : Marque une augmentation des utilisations.                    *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_use(GDynamicTypes *types)
-{
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : types = gestionnaire de types courant.                       *
-*                                                                             *
-*  Description : Marque une diminution des utilisations.                      *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_unuse(GDynamicTypes *types)
-{
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : types = gestionnaire de types courant.                       *
-*                type  = nouveau type GLib à traiter.                         *
-*                info  = information concernant ce type à constituer. [OUT]   *
-*                table = table de valeur à éventuellement initialiser. [OUT]  *
-*                                                                             *
-*  Description : Complète la définition d'un type dynamiquement.              *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void g_dynamic_types_complete_type(GDynamicTypes *types, GType type, GTypeInfo *info, GTypeValueTable *table)
-{
-    type_dyn_info_t *nfo;                   /* Source d'inspiration        */
-    GType parent;                           /* Type parent du type         */
-    GTypeQuery query;                       /* Informations complémentaires*/
-
-    /* Consultation */
-
-    nfo = g_dynamic_types_find(types, type);
-    assert(nfo != NULL);
-
-    parent = g_type_parent(type);
-    g_type_query(parent, &query);
-
-    /* Définition */
-
-    info->class_size = query.class_size;
-    info->class_init = nfo->cinit;
-    info->class_data = nfo->data;
-
-    info->instance_size = query.instance_size;
-    info->instance_init = nfo->init;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : parent = type GLib parent.                                   *
-*                type   = identifiant du type GLib à considérer.              *
-*                                                                             *
-*  Description : Retrouve les informations concernant un type dynamique.      *
-*                                                                             *
-*  Retour      : Structure contenant les informations associées au type.      *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static type_dyn_info_t *g_dynamic_types_find(const GDynamicTypes *types, GType target)
-{
-    type_dyn_info_t *result;                /* Informations à retourner    */
-    size_t i;                               /* Boucle de parcours          */
-
-    result = NULL;
-
-    for (i = 0; i < types->count && result == NULL; i++)
-        if (types->info[i]->type == target)
-            result = types->info[i];
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : parent = type GLib parent.                                   *
-*                name   = désignation du nouveau type.                        *
-*                cinit  = procédure d'initialisation de la classe associée.   *
-*                data   = éventuelles données à associer à la future classe.  *
-*                init   = procédure d'initialisation pour chaque instance.    *
-*                                                                             *
-*  Description : Fournit un identifiant GLib pour un nouveau type.            *
-*                                                                             *
-*  Retour      : identifiant d'un nouveau type valide, ou G_TYPE_INVALID.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static GType g_dynamic_types_register_type(GDynamicTypes *types, GType parent, const char *name, GClassInitFunc cinit, gconstpointer data, GInstanceInitFunc init)
-{
-    GType result;                           /* Identifiant à retourner     */
-    type_dyn_info_t *new;                   /* Mémorisation de paramètres  */
-
-    /* Création d'un nouveau type adapté */
-
-    result = g_type_register_dynamic(parent, name, G_TYPE_PLUGIN(types), 0);
-
-    if (result == G_TYPE_INVALID)
-        goto exit;
-
-    new = malloc(sizeof(type_dyn_info_t));
-
-    new->type = result;
-
-    new->cinit = cinit;
-    new->data = data;
-
-    new->init = init;
-
-    /* Inscription définitive */
-
-    types->info = realloc(types->info, ++types->count * sizeof(type_dyn_info_t *));
-
-    types->info[types->count - 1] = new;
-
- exit:
-
-    return result;
-
-}
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/*                         ACCOMPAGNEMENTS DES NOUVEAUX TYPES                         */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : -                                                            *
-*                                                                             *
-*  Description : Lance le support de dérivations de types dans Chrysalide.    *
-*                                                                             *
-*  Retour      : Bilan de l'opération.                                        *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-bool init_chrysalide_dynamic_types(void)
-{
-    bool result;                            /* Bilan à retourner           */
-
-    _chrysalide_dtypes = g_dynamic_types_new();
-
-    result = (_chrysalide_dtypes != NULL);
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : -                                                            *
-*                                                                             *
-*  Description : Arrête le support de dérivations de types dans Chrysalide.   *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-void exit_chrysalide_dynamic_types(void)
-{
-    g_object_unref(G_OBJECT(_chrysalide_dtypes));
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : parent = type GLib parent.                                   *
-*                name   = désignation du nouveau type.                        *
-*                cinit  = procédure d'initialisation de la classe associée.   *
-*                data   = éventuelles données à associer à la future classe.  *
-*                init   = procédure d'initialisation pour chaque instance.    *
-*                                                                             *
-*  Description : Fournit un identifiant GLib pour un nouveau type.            *
-*                                                                             *
-*  Retour      : Identifiant d'un nouveau type valide, ou G_TYPE_INVALID.     *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-GType build_dynamic_type(GType parent, const char *name, GClassInitFunc cinit, gconstpointer data, GInstanceInitFunc init)
-{
-    GType result;                           /* Identifiant à retourner     */
-
-    result = g_type_from_name(name);
-
-    if (result == 0)
-        result = g_dynamic_types_register_type(_chrysalide_dtypes, parent, name, cinit, data, init);
-
-    return result;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : type = type d'instance à créer.                              *
-*                                                                             *
-*  Description : Crée un objet à partir d'un type, dynamique ou classique.    *
-*                                                                             *
-*  Retour      : Instance d'objet mise en place ou NULL en cas d'erreur.      *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-gpointer create_object_from_type(GType type)
-{
-    GObject *result;                        /* Instance à retourner        */
-
-    result = NULL;
-
-    if (g_dynamic_types_find(_chrysalide_dtypes, type) != NULL)
-        result = NULL;//build_type_instance(type);
-
-    else
-        result = g_object_new(type, NULL);
-
-    assert(result != NULL);
-
-    return result;
-
-}
diff --git a/src/plugins/dt.h b/src/plugins/dt.h
deleted file mode 100644
index 5c92593..0000000
--- a/src/plugins/dt.h
+++ /dev/null
@@ -1,50 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * dt.h - prototypes pour la possibilité de créer de nouveaux types de façon dynamique
- *
- * Copyright (C) 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 Chrysalide.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef _PLUGINS_DT_H
-#define _PLUGINS_DT_H
-
-
-#include <glib-object.h>
-#include <stdbool.h>
-
-
-
-/* ----------------------- ACCOMPAGNEMENTS DES NOUVEAUX TYPES ----------------------- */
-
-
-/* Lance le support de dérivations de types dans Chrysalide. */
-bool init_chrysalide_dynamic_types(void);
-
-/* Arrête le support de dérivations de types dans Chrysalide. */
-void exit_chrysalide_dynamic_types(void);
-
-/* Fournit un identifiant GLib pour un nouveau type. */
-GType build_dynamic_type(GType, const char *, GClassInitFunc, gconstpointer, GInstanceInitFunc);
-
-/* Crée un objet à partir d'un type, dynamique ou classique. */
-gpointer create_object_from_type(GType);
-
-
-
-#endif  /* _PLUGINS_PYCHRYSALIDE_DT_H */
diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c
index 083f11f..694d138 100644
--- a/src/plugins/pglist.c
+++ b/src/plugins/pglist.c
@@ -36,7 +36,6 @@
 #include <i18n.h>
 
 
-#include "dt.h"
 #include "manager.h"
 #include "plugin-int.h"
 #include "../common/cpp.h"
@@ -92,8 +91,7 @@ bool init_all_plugins(bool load)
     char *saveptr;                          /* Sauvegarde pour parcours    */
     char *udir;                             /* Répertoire supplémentaire ? */
 
-    result = init_chrysalide_dynamic_types();
-    if (!result) goto exit;
+    result = true;
 
     g_rw_lock_init(&_pg_lock);
 
@@ -199,8 +197,6 @@ void exit_all_plugins(void)
 
     g_rw_lock_clear(&_pg_lock);
 
-    exit_chrysalide_dynamic_types();
-
 
 
 #endif
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index c537bc3..d14e656 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -34,7 +34,6 @@
 #include <string.h>
 
 
-#include "dt.h"
 #include "pglist.h"
 #include "plugin-int.h"
 #include "../common/compiler.h"
-- 
cgit v0.11.2-87-g4458