summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/pychrysalide/analysis/binary.c2
-rw-r--r--plugins/pychrysalide/analysis/loaded.c119
-rw-r--r--src/analysis/binary.c67
-rw-r--r--src/analysis/loaded-int.h17
-rw-r--r--src/analysis/loaded.c173
-rw-r--r--src/analysis/loaded.h22
6 files changed, 256 insertions, 144 deletions
diff --git a/plugins/pychrysalide/analysis/binary.c b/plugins/pychrysalide/analysis/binary.c
index c9dc9c5..d8f01e5 100644
--- a/plugins/pychrysalide/analysis/binary.c
+++ b/plugins/pychrysalide/analysis/binary.c
@@ -562,7 +562,7 @@ bool ensure_python_loaded_binary_is_registered(void)
if (!ensure_python_loaded_content_is_registered())
return false;
- if (!register_class_for_pygobject(dict, G_TYPE_LOADED_BINARY, type, &PyGObject_Type))
+ if (!register_class_for_pygobject(dict, G_TYPE_LOADED_BINARY, type, get_python_loaded_content_type()))
return false;
}
diff --git a/plugins/pychrysalide/analysis/loaded.c b/plugins/pychrysalide/analysis/loaded.c
index 3ed51d5..607f57c 100644
--- a/plugins/pychrysalide/analysis/loaded.c
+++ b/plugins/pychrysalide/analysis/loaded.c
@@ -35,6 +35,7 @@
#include <analysis/loaded-int.h>
#include <core/global.h>
+#include <plugins/dt.h>
#include "content.h"
@@ -47,8 +48,11 @@
/* ------------------------ GLUE POUR CREATION DEPUIS PYTHON ------------------------ */
-/* Procède à l'initialisation de l'interface de génération. */
-static void py_loaded_content_interface_init(GLoadedContentIface *, gpointer *);
+/* Accompagne la création d'une instance dérivée en Python. */
+static PyObject *py_loaded_content_new(PyTypeObject *, PyObject *, PyObject *);
+
+/* Initialise la classe générique des contenus chargés. */
+static void py_loaded_content_init_gclass(GLoadedContentClass *, gpointer);
/* Fournit le contenu représenté de l'élément chargé. */
static GBinContent *py_loaded_content_get_content_wrapper(const GLoadedContent *);
@@ -121,21 +125,28 @@ static PyObject *py_loaded_content_get_format_name(PyObject *, void *);
/******************************************************************************
* *
-* Paramètres : iface = interface GLib à initialiser. *
-* unused = adresse non utilisée ici. *
+* Paramètres : type = type du nouvel objet à mettre en place. *
+* args = éventuelle liste d'arguments. *
+* kwds = éventuel dictionnaire de valeurs mises à disposition. *
* *
-* Description : Procède à l'initialisation de l'interface de génération. *
+* Description : Accompagne la création d'une instance dérivée en Python. *
* *
-* Retour : - *
+* Retour : Nouvel objet Python mis en place ou NULL en cas d'échec. *
* *
* Remarques : - *
* *
******************************************************************************/
-static void py_loaded_content_interface_init(GLoadedContentIface *iface, gpointer *unused)
+static PyObject *py_loaded_content_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 */
+
#define LOADED_CONTENT_DOC \
- "The LoadedContent interface is an intermediary level of abstraction" \
+ "The LoadedContent object is an intermediary level of abstraction" \
" for all loaded binary contents to analyze." \
"\n" \
"No matter if the loaded content comes from an ELF file or XML data," \
@@ -157,18 +168,74 @@ static void py_loaded_content_interface_init(GLoadedContentIface *iface, gpointe
"* pychrysalide.analysis.storage.LoadedContent._build_view();\n" \
"* pychrysalide.analysis.storage.LoadedContent._get_view_index();\n"
- iface->get_content = py_loaded_content_get_content_wrapper;
- iface->get_format_name = py_loaded_content_get_format_name_wrapper;
+ /* Validations diverses */
+
+ base = get_python_loaded_content_type();
+
+ if (type == base)
+ {
+ result = NULL;
+ PyErr_Format(PyExc_RuntimeError, _("%s is an abstract class"), type->tp_name);
+ goto exit;
+ }
+
+ /* Mise en place d'un type dédié */
+
+ first_time = (g_type_from_name(type->tp_name) == 0);
+
+ gtype = build_dynamic_type(G_TYPE_LOADED_CONTENT, type->tp_name,
+ (GClassInitFunc)py_loaded_content_init_gclass, NULL, NULL);
+
+ if (first_time)
+ {
+ status = register_class_for_dynamic_pygobject(gtype, type, base);
+
+ if (!status)
+ {
+ result = NULL;
+ goto exit;
+ }
+
+ }
+
+ /* On crée, et on laisse ensuite la main à PyGObject_Type.tp_init() */
+
+ result = PyType_GenericNew(type, args, kwds);
+
+ exit:
+
+ return result;
- iface->analyze = py_loaded_content_analyze_wrapper;
+}
- iface->describe = py_loaded_content_describe_wrapper;
- iface->count_views = py_loaded_content_count_views_wrapper;
- iface->get_view_name = py_loaded_content_get_view_name_wrapper;
- iface->build_def_view = py_loaded_content_build_default_view_wrapper;
- iface->build_view = py_loaded_content_build_view_wrapper;
- iface->get_view_index = py_loaded_content_get_view_index_wrapper;
+/******************************************************************************
+* *
+* Paramètres : class = classe à initialiser. *
+* unused = données non utilisées ici. *
+* *
+* Description : Initialise la classe générique des contenus chargés. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void py_loaded_content_init_gclass(GLoadedContentClass *class, gpointer unused)
+{
+ class->get_content = py_loaded_content_get_content_wrapper;
+ class->get_format_name = py_loaded_content_get_format_name_wrapper;
+
+ class->analyze = py_loaded_content_analyze_wrapper;
+
+ class->describe = py_loaded_content_describe_wrapper;
+
+ class->count_views = py_loaded_content_count_views_wrapper;
+ class->get_view_name = py_loaded_content_get_view_name_wrapper;
+ class->build_def_view = py_loaded_content_build_default_view_wrapper;
+ class->build_view = py_loaded_content_build_view_wrapper;
+ class->get_view_index = py_loaded_content_get_view_index_wrapper;
}
@@ -1396,14 +1463,16 @@ PyTypeObject *get_python_loaded_content_type(void)
PyVarObject_HEAD_INIT(NULL, 0)
.tp_name = "pychrysalide.analysis.LoadedContent",
- .tp_basicsize = sizeof(PyObject),
+ .tp_basicsize = sizeof(PyGObject),
- .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_BASETYPE,
.tp_doc = LOADED_CONTENT_DOC,
.tp_methods = py_loaded_content_methods,
- .tp_getset = py_loaded_content_getseters
+ .tp_getset = py_loaded_content_getseters,
+
+ .tp_new = py_loaded_content_new,
};
@@ -1430,14 +1499,6 @@ bool ensure_python_loaded_content_is_registered(void)
PyObject *module; /* Module à recompléter */
PyObject *dict; /* Dictionnaire du module */
- static GInterfaceInfo info = { /* Paramètres d'inscription */
-
- .interface_init = (GInterfaceInitFunc)py_loaded_content_interface_init,
- .interface_finalize = NULL,
- .interface_data = NULL,
-
- };
-
type = get_python_loaded_content_type();
if (!PyType_HasFeature(type, Py_TPFLAGS_READY))
@@ -1449,7 +1510,7 @@ bool ensure_python_loaded_content_is_registered(void)
if (!ensure_python_named_widget_is_registered())
return false;
- if (!register_interface_for_pygobject(dict, G_TYPE_LOADED_CONTENT, type, &info))
+ if (!register_class_for_pygobject(dict, G_TYPE_LOADED_CONTENT, type, &PyGObject_Type))
return false;
}
diff --git a/src/analysis/binary.c b/src/analysis/binary.c
index 2b23eff..ddd2e30 100644
--- a/src/analysis/binary.c
+++ b/src/analysis/binary.c
@@ -63,7 +63,7 @@
/* Description de fichier binaire (instance) */
struct _GLoadedBinary
{
- GObject parent; /* A laisser en premier */
+ GLoadedContent parent; /* A laisser en premier */
bool use_remote; /* Enregistrements distants ? */
char *remote_host; /* Nom du serveur distant */
@@ -91,7 +91,7 @@ struct _GLoadedBinary
/* Description de fichier binaire (classe) */
struct _GLoadedBinaryClass
{
- GObjectClass parent; /* A laisser en premier */
+ GLoadedContentClass parent; /* A laisser en premier */
};
@@ -102,9 +102,6 @@ static void g_loaded_binary_class_init(GLoadedBinaryClass *);
/* Initialise une description de fichier binaire. */
static void g_loaded_binary_init(GLoadedBinary *);
-/* Procède à l'initialisation de l'interface de contenu chargé. */
-static void g_loaded_binary_interface_init(GLoadedContentInterface *);
-
/* Supprime toutes les références externes. */
static void g_loaded_binary_dispose(GLoadedBinary *);
@@ -197,9 +194,7 @@ static GDisplayOptions *g_loaded_binary_get_display_options(const GLoadedBinary
/* Indique le type défini pour une description de fichier binaire. */
-G_DEFINE_TYPE_WITH_CODE(GLoadedBinary, g_loaded_binary, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE(G_TYPE_LOADED_CONTENT, g_loaded_binary_interface_init)
- G_IMPLEMENT_INTERFACE(G_TYPE_NAMED_WIDGET, g_loaded_content_named_interface_init));
+G_DEFINE_TYPE(GLoadedBinary, g_loaded_binary, G_TYPE_LOADED_CONTENT);
/******************************************************************************
@@ -217,12 +212,33 @@ G_DEFINE_TYPE_WITH_CODE(GLoadedBinary, g_loaded_binary, G_TYPE_OBJECT,
static void g_loaded_binary_class_init(GLoadedBinaryClass *klass)
{
GObjectClass *object; /* Autre version de la classe */
+ GLoadedContentClass *loaded; /* Forme parente de la classe */
object = G_OBJECT_CLASS(klass);
object->dispose = (GObjectFinalizeFunc/* ! */)g_loaded_binary_dispose;
object->finalize = (GObjectFinalizeFunc)g_loaded_binary_finalize;
+ loaded = G_LOADED_CONTENT_CLASS(klass);
+
+ loaded->restore = (restore_content_fc)g_loaded_binary_restore;
+ loaded->save = (save_content_fc)g_loaded_binary_save;
+
+ loaded->get_content = (get_content_fc)g_loaded_binary_get_content;
+ loaded->get_format_name = (get_format_name_fc)g_loaded_binary_get_format_name;
+
+ loaded->analyze = (analyze_loaded_fc)g_loaded_binary_analyze;
+
+ loaded->describe = (describe_loaded_fc)g_loaded_binary_describe;
+
+ loaded->count_views = (count_loaded_views_fc)g_loaded_binary_count_views;
+ loaded->get_view_name = (get_loaded_view_name_fc)g_loaded_binary_get_view_name;
+ loaded->build_def_view = (build_loaded_def_view_fc)g_loaded_binary_build_default_view;
+ loaded->build_view = (build_loaded_view_fc)g_loaded_binary_build_view;
+ loaded->get_view_index = (get_loaded_view_index_fc)g_loaded_binary_get_view_index;
+
+ loaded->get_options = (get_loaded_options_fc)g_loaded_binary_get_display_options;
+
}
@@ -270,41 +286,6 @@ static void g_loaded_binary_init(GLoadedBinary *binary)
/******************************************************************************
* *
-* Paramètres : iface = interface GLib à initialiser. *
-* *
-* Description : Procède à l'initialisation de l'interface de contenu chargé. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_loaded_binary_interface_init(GLoadedContentInterface *iface)
-{
- iface->restore = (restore_content_fc)g_loaded_binary_restore;
- iface->save = (save_content_fc)g_loaded_binary_save;
-
- iface->get_content = (get_content_fc)g_loaded_binary_get_content;
- iface->get_format_name = (get_format_name_fc)g_loaded_binary_get_format_name;
-
- iface->analyze = (analyze_loaded_fc)g_loaded_binary_analyze;
-
- iface->describe = (describe_loaded_fc)g_loaded_binary_describe;
-
- iface->count_views = (count_loaded_views_fc)g_loaded_binary_count_views;
- iface->get_view_name = (get_loaded_view_name_fc)g_loaded_binary_get_view_name;
- iface->build_def_view = (build_loaded_def_view_fc)g_loaded_binary_build_default_view;
- iface->build_view = (build_loaded_view_fc)g_loaded_binary_build_view;
- iface->get_view_index = (get_loaded_view_index_fc)g_loaded_binary_get_view_index;
-
- iface->get_options = (get_loaded_options_fc)g_loaded_binary_get_display_options;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : binary = instance d'objet GLib à traiter. *
* *
* Description : Supprime toutes les références externes. *
diff --git a/src/analysis/loaded-int.h b/src/analysis/loaded-int.h
index 0476af5..cd47a6a 100644
--- a/src/analysis/loaded-int.h
+++ b/src/analysis/loaded-int.h
@@ -67,10 +67,17 @@ typedef unsigned int (* get_loaded_view_index_fc) (GLoadedContent *, GtkWidget *
typedef GDisplayOptions * (* get_loaded_options_fc) (const GLoadedContent *, unsigned int);
-/* Accès à un contenu binaire quelconque (interface) */
-struct _GLoadedContentIface
+/* Accès à un contenu binaire quelconque (instance) */
+struct _GLoadedContent
{
- GTypeInterface base_iface; /* A laisser en premier */
+ GObject parent; /* A laisser en premier */
+
+};
+
+/* Accès à un contenu binaire quelconque (classe) */
+struct _GLoadedContentClass
+{
+ GObjectClass parent; /* A laisser en premier */
/* Méthodes virtuelles */
@@ -99,9 +106,5 @@ struct _GLoadedContentIface
};
-/* Redéfinition */
-typedef GLoadedContentIface GLoadedContentInterface;
-
-
#endif /* _ANALYSIS_LOADED_INT_H */
diff --git a/src/analysis/loaded.c b/src/analysis/loaded.c
index 10ab05e..3a497f9 100644
--- a/src/analysis/loaded.c
+++ b/src/analysis/loaded.c
@@ -39,11 +39,6 @@
-/* Analyse de contenu chargé (instance) */
-typedef struct _GLoadedAnalysis GLoadedAnalysis;
-
-
-
/* ---------------------- GESTION SOUS FORME DE CONTENU CHARGE ---------------------- */
@@ -59,8 +54,20 @@ typedef struct _analysis_data_t
} analysis_data_t;
-/* Procède à l'initialisation de l'interface de contenu chargé. */
-static void g_loaded_content_default_init(GLoadedContentInterface *);
+/* Initialise la classe des contenus chargés. */
+static void g_loaded_content_class_init(GLoadedContentClass *);
+
+/* Initialise un contenu chargé. */
+static void g_loaded_content_init(GLoadedContent *);
+
+/* Procède à l'initialisation de l'interface de composant nommé. */
+static void g_loaded_content_named_init(GNamedWidgetIface *);
+
+/* Supprime toutes les références externes. */
+static void g_loaded_content_dispose(GLoadedContent *);
+
+/* Procède à la libération totale de la mémoire. */
+static void g_loaded_content_finalize(GLoadedContent *);
/* Crée une structure pour accompagner une tâche d'analyse. */
static analysis_data_t *create_analysis_data(GLoadedContent *, bool, bool);
@@ -82,14 +89,15 @@ static void on_loaded_content_analysis_completed(GSeqWork *, analysis_data_t *);
/* Détermine le type d'une interface pour l'intégration de contenu chargé. */
-G_DEFINE_INTERFACE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_CODE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE(G_TYPE_NAMED_WIDGET, g_loaded_content_named_init));
/******************************************************************************
* *
-* Paramètres : iface = interface GLib à initialiser. *
+* Paramètres : klass = classe à initialiser. *
* *
-* Description : Procède à l'initialisation de l'interface de contenu chargé. *
+* Description : Initialise la classe des contenus chargés. *
* *
* Retour : - *
* *
@@ -97,12 +105,19 @@ G_DEFINE_INTERFACE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT);
* *
******************************************************************************/
-static void g_loaded_content_default_init(GLoadedContentInterface *iface)
+static void g_loaded_content_class_init(GLoadedContentClass *klass)
{
+ GObjectClass *object; /* Autre version de la classe */
+
+ object = G_OBJECT_CLASS(klass);
+
+ object->dispose = (GObjectFinalizeFunc/* ! */)g_loaded_content_dispose;
+ object->finalize = (GObjectFinalizeFunc)g_loaded_content_finalize;
+
g_signal_new("analyzed",
G_TYPE_LOADED_CONTENT,
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(GLoadedContentIface, analyzed),
+ G_STRUCT_OFFSET(GLoadedContentClass, analyzed),
NULL, NULL,
g_cclosure_marshal_VOID__BOOLEAN,
G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
@@ -112,6 +127,24 @@ static void g_loaded_content_default_init(GLoadedContentInterface *iface)
/******************************************************************************
* *
+* Paramètres : content = instance à initialiser. *
+* *
+* Description : Initialise un contenu chargé. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_loaded_content_init(GLoadedContent *content)
+{
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : iface = interface GLib à initialiser. *
* *
* Description : Procède à l'initialisation de l'interface de composant nommé.*
@@ -122,7 +155,7 @@ static void g_loaded_content_default_init(GLoadedContentInterface *iface)
* *
******************************************************************************/
-void g_loaded_content_named_interface_init(GNamedWidgetIface *iface)
+static void g_loaded_content_named_init(GNamedWidgetIface *iface)
{
iface->get_name = (get_named_widget_name_fc)g_loaded_content_describe;
iface->get_widget = (get_named_widget_widget_fc)g_loaded_content_build_default_view;
@@ -132,6 +165,44 @@ void g_loaded_content_named_interface_init(GNamedWidgetIface *iface)
/******************************************************************************
* *
+* Paramètres : content = instance d'objet GLib à traiter. *
+* *
+* Description : Supprime toutes les références externes. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_loaded_content_dispose(GLoadedContent *content)
+{
+ G_OBJECT_CLASS(g_loaded_content_parent_class)->dispose(G_OBJECT(content));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = instance d'objet GLib à traiter. *
+* *
+* Description : Procède à la libération totale de la mémoire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_loaded_content_finalize(GLoadedContent *content)
+{
+ G_OBJECT_CLASS(g_loaded_content_parent_class)->finalize(G_OBJECT(content));
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : content = élément chargé à traiter. *
* xdoc = structure XML en cours d'édition. *
* context = contexte à utiliser pour les recherches. *
@@ -148,12 +219,12 @@ void g_loaded_content_named_interface_init(GNamedWidgetIface *iface)
bool g_loaded_content_restore(GLoadedContent *content, xmlDocPtr xdoc, xmlXPathContextPtr context, const char *path)
{
bool result; /* Bilan à faire remonter */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- if (iface->restore != NULL)
- result = iface->restore(content, xdoc, context, path);
+ if (class->restore != NULL)
+ result = class->restore(content, xdoc, context, path);
else
result = true;
@@ -181,12 +252,12 @@ bool g_loaded_content_restore(GLoadedContent *content, xmlDocPtr xdoc, xmlXPathC
bool g_loaded_content_save(GLoadedContent *content, xmlDocPtr xdoc, xmlXPathContextPtr context, const char *path)
{
bool result; /* Bilan à faire remonter */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- if (iface->save != NULL)
- result = iface->save(content, xdoc, context, path);
+ if (class->save != NULL)
+ result = class->save(content, xdoc, context, path);
else
result = true;
@@ -211,11 +282,11 @@ bool g_loaded_content_save(GLoadedContent *content, xmlDocPtr xdoc, xmlXPathCont
GBinContent *g_loaded_content_get_content(const GLoadedContent *content)
{
GBinContent *result; /* Contenu interne à renvoyer */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->get_content(content);
+ result = class->get_content(content);
return result;
@@ -237,11 +308,11 @@ GBinContent *g_loaded_content_get_content(const GLoadedContent *content)
char *g_loaded_content_get_format_name(const GLoadedContent *content)
{
char *result; /* Contenu interne à renvoyer */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->get_format_name(content);
+ result = class->get_format_name(content);
return result;
@@ -298,17 +369,17 @@ static analysis_data_t *create_analysis_data(GLoadedContent *content, bool conne
static bool process_analysis_with_data(analysis_data_t *data, size_t i, GtkStatusStack *status, activity_id_t id)
{
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
GWorkQueue *queue; /* Gestionnaire de différés */
wgroup_id_t gid; /* Identifiant pour les tâches */
- iface = G_LOADED_CONTENT_GET_IFACE(data->content);
+ class = G_LOADED_CONTENT_GET_CLASS(data->content);
queue = get_work_queue();
gid = g_work_queue_define_work_group(queue);
- data->success = iface->analyze(data->content, data->connect, data->cache, gid, status);
+ data->success = class->analyze(data->content, data->connect, data->cache, gid, status);
if (data->success)
handle_loaded_content(PGA_CONTENT_ANALYZED, data->content, gid, status);
@@ -460,11 +531,11 @@ bool g_loaded_content_analyze_and_wait(GLoadedContent *content, bool connect, bo
char *g_loaded_content_describe(const GLoadedContent *content, bool full)
{
char *result; /* Description à retourner */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->describe(content, full);
+ result = class->describe(content, full);
return result;
@@ -520,11 +591,11 @@ char **g_loaded_content_detect_obfuscators(const GLoadedContent *content, bool v
unsigned int g_loaded_content_count_views(const GLoadedContent *content)
{
unsigned int result; /* Quantité de vues à renvoyer */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->count_views(content);
+ result = class->count_views(content);
return result;
@@ -547,13 +618,13 @@ unsigned int g_loaded_content_count_views(const GLoadedContent *content)
char *g_loaded_content_get_view_name(const GLoadedContent *content, unsigned int index)
{
char *result; /* Désignation à retourner */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
assert(index <= g_loaded_content_count_views(content));
- result = iface->get_view_name(content, index);
+ result = class->get_view_name(content, index);
return result;
@@ -575,11 +646,11 @@ char *g_loaded_content_get_view_name(const GLoadedContent *content, unsigned int
GtkWidget *g_loaded_content_build_default_view(GLoadedContent *content)
{
GtkWidget *result; /* Support à retourner */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->build_def_view(content);
+ result = class->build_def_view(content);
return result;
@@ -602,13 +673,13 @@ GtkWidget *g_loaded_content_build_default_view(GLoadedContent *content)
GtkWidget *g_loaded_content_build_view(GLoadedContent *content, unsigned int index)
{
GtkWidget *result; /* Support à retourner */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
assert(index <= g_loaded_content_count_views(content));
- result = iface->build_view(content, index);
+ result = class->build_view(content, index);
return result;
@@ -631,11 +702,11 @@ GtkWidget *g_loaded_content_build_view(GLoadedContent *content, unsigned int ind
unsigned int g_loaded_content_get_view_index(GLoadedContent *content, GtkWidget *view)
{
unsigned int result; /* Indice à retourner */
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->get_view_index(content, view);
+ result = class->get_view_index(content, view);
assert(result == -1 || result <= g_loaded_content_count_views(content));
@@ -660,13 +731,13 @@ unsigned int g_loaded_content_get_view_index(GLoadedContent *content, GtkWidget
GDisplayOptions *g_loaded_content_get_display_options(const GLoadedContent *content, unsigned int index)
{
GDisplayOptions *result; /* Accès aux options à renvoyer*/
- GLoadedContentIface *iface; /* Interface utilisée */
+ GLoadedContentClass *class; /* Classe de l'instance */
assert(index <= g_loaded_content_count_views(content));
- iface = G_LOADED_CONTENT_GET_IFACE(content);
+ class = G_LOADED_CONTENT_GET_CLASS(content);
- result = iface->get_options(content, index);
+ result = class->get_options(content, index);
return result;
diff --git a/src/analysis/loaded.h b/src/analysis/loaded.h
index 46404e1..9a88f8c 100644
--- a/src/analysis/loaded.h
+++ b/src/analysis/loaded.h
@@ -33,7 +33,6 @@
#include "content.h"
#include "../common/xml.h"
#include "../glibext/gdisplayoptions.h"
-#include "../glibext/named.h"
#include "../gtkext/gtkdockstation.h"
@@ -41,27 +40,24 @@
/* ---------------------- GESTION SOUS FORME DE CONTENU CHARGE ---------------------- */
-#define G_TYPE_LOADED_CONTENT (g_loaded_content_get_type())
-#define G_LOADED_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_LOADED_CONTENT, GLoadedContent))
-#define G_LOADED_CONTENT_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST((vtable), G_TYPE_LOADED_CONTENT, GLoadedContentIface))
-#define G_IS_LOADED_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_LOADED_CONTENT))
-#define G_IS_LOADED_CONTENT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE((vtable), G_TYPE_LOADED_CONTENT))
-#define G_LOADED_CONTENT_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), G_TYPE_LOADED_CONTENT, GLoadedContentIface))
+#define G_TYPE_LOADED_CONTENT g_loaded_content_get_type()
+#define G_LOADED_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_LOADED_CONTENT, GLoadedContent))
+#define G_IS_LOADED_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_LOADED_CONTENT))
+#define G_LOADED_CONTENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_LOADED_CONTENT, GLoadedContentClass))
+#define G_IS_LOADED_CONTENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_LOADED_CONTENT))
+#define G_LOADED_CONTENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_LOADED_CONTENT, GLoadedContentClass))
-/* Accès à un contenu binaire quelconque (coquille vide) */
+/* Accès à un contenu binaire quelconque (instance) */
typedef struct _GLoadedContent GLoadedContent;
-/* Accès à un contenu binaire quelconque (interface) */
-typedef struct _GLoadedContentIface GLoadedContentIface;
+/* Accès à un contenu binaire quelconque (instance) */
+typedef struct _GLoadedContentClass GLoadedContentClass;
/* Détermine le type d'une interface pour l'intégration de contenu chargé. */
GType g_loaded_content_get_type(void) G_GNUC_CONST;
-/* Procède à l'initialisation de l'interface de composant nommé. */
-void g_loaded_content_named_interface_init(GNamedWidgetIface *);
-
/* Interprète un contenu chargé avec un appui XML. */
bool g_loaded_content_restore(GLoadedContent *, xmlDoc *, xmlXPathContext *, const char *);