diff options
Diffstat (limited to 'src/analysis/loaded.c')
-rw-r--r-- | src/analysis/loaded.c | 535 |
1 files changed, 271 insertions, 264 deletions
diff --git a/src/analysis/loaded.c b/src/analysis/loaded.c index c1f6e17..9a7b1fd 100644 --- a/src/analysis/loaded.c +++ b/src/analysis/loaded.c @@ -25,86 +25,67 @@ #include <assert.h> +#include <malloc.h> #include "loaded-int.h" #include "../core/global.h" #include "../core/queue.h" #include "../glibext/chrysamarshal.h" -#include "../glibext/gloadedpanel.h" -#include "../glibext/named-int.h" +#ifdef INCLUDE_GTK_SUPPORT +# include "../glibext/gloadedpanel.h" +# include "../glibext/named-int.h" +#endif +#include "../glibext/seq.h" #include "../plugins/pglist.h" -/* Analyse de contenu chargé (instance) */ -typedef struct _GLoadedAnalysis GLoadedAnalysis; - - - /* ---------------------- GESTION SOUS FORME DE CONTENU CHARGE ---------------------- */ -/* Procède à l'initialisation de l'interface de contenu chargé. */ -static void g_loaded_content_default_init(GLoadedContentInterface *); - -/* Acquitte la fin d'une tâche d'analyse différée et complète. */ -static void on_loaded_content_analysis_completed(GLoadedAnalysis *, GLoadedContent *); - - - -/* -------------------------- PHASE D'ANALYSE EN PARALLELE -------------------------- */ - - -#define G_TYPE_LOADED_ANALYSIS g_loaded_analysis_get_type() -#define G_LOADED_ANALYSIS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_LOADED_ANALYSIS, GDelayedDisassembly)) -#define G_IS_LOADED_ANALYSIS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_LOADED_ANALYSIS)) -#define G_LOADED_ANALYSIS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_LOADED_ANALYSIS, GDelayedDisassemblyClass)) -#define G_IS_LOADED_ANALYSIS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_LOADED_ANALYSIS)) -#define G_LOADED_ANALYSIS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_LOADED_ANALYSIS, GDelayedDisassemblyClass)) - - -/* Analyse de contenu chargé (instance) */ -struct _GLoadedAnalysis +/* Données de travail */ +typedef struct _analysis_data_t { - GDelayedWork parent; /* A laisser en premier */ - GLoadedContent *content; /* Cible de l'analyse à mener */ bool connect; /* Lancement de connexions ? */ bool cache; /* Degré d'opération à mener */ bool success; /* Bilan de l'opération */ -}; +} analysis_data_t; -/* Analyse de contenu chargé (classe) */ -typedef struct _GLoadedAnalysisClass -{ - GDelayedWorkClass parent; /* A laisser en premier */ -} GLoadedAnalysisClass; +/* 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 *); -/* Indique le type défini pour les tâches d'analyse différée. */ -static GType g_loaded_analysis_get_type(void); +#ifdef INCLUDE_GTK_SUPPORT -/* Initialise la classe des tâches d'analyse différées. */ -static void g_loaded_analysis_class_init(GLoadedAnalysisClass *); +/* Procède à l'initialisation de l'interface de composant nommé. */ +static void g_loaded_content_named_init(GNamedWidgetIface *); -/* Initialise une tâche d'analyse de contenu différée. */ -static void g_loaded_analysis_init(GLoadedAnalysis *); +#endif /* Supprime toutes les références externes. */ -static void g_loaded_analysis_dispose(GLoadedAnalysis *); +static void g_loaded_content_dispose(GLoadedContent *); /* Procède à la libération totale de la mémoire. */ -static void g_loaded_analysis_finalize(GLoadedAnalysis *); +static void g_loaded_content_finalize(GLoadedContent *); -/* Crée une tâche d'analyse de contenu différée. */ -static GLoadedAnalysis *g_loaded_analysis_new(GLoadedContent *, bool, bool); +/* Crée une structure pour accompagner une tâche d'analyse. */ +static analysis_data_t *create_analysis_data(GLoadedContent *, bool, bool); /* Assure l'analyse d'un contenu chargé en différé. */ -static void g_loaded_analysis_process(GLoadedAnalysis *, GtkStatusStack *); +static bool process_analysis_with_data(analysis_data_t *, size_t, GtkStatusStack *, activity_id_t); + +/* Efface une structure d'accompagnement de tâche d'analyse. */ +static void delete_analysis_data(analysis_data_t *); + +/* Acquitte la fin d'une tâche d'analyse différée et complète. */ +static void on_loaded_content_analysis_completed(GSeqWork *, analysis_data_t *); @@ -114,14 +95,19 @@ static void g_loaded_analysis_process(GLoadedAnalysis *, GtkStatusStack *); /* Détermine le type d'une interface pour l'intégration de contenu chargé. */ -G_DEFINE_INTERFACE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT); +#ifdef INCLUDE_GTK_SUPPORT +G_DEFINE_TYPE_WITH_CODE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE(G_TYPE_NAMED_WIDGET, g_loaded_content_named_init)); +#else +G_DEFINE_TYPE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT); +#endif /****************************************************************************** * * -* 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 : - * * * @@ -129,12 +115,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); @@ -144,6 +137,27 @@ 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) +{ + +} + + +#ifdef INCLUDE_GTK_SUPPORT + + +/****************************************************************************** +* * * Paramètres : iface = interface GLib à initialiser. * * * * Description : Procède à l'initialisation de l'interface de composant nommé.* @@ -154,7 +168,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; @@ -162,6 +176,47 @@ void g_loaded_content_named_interface_init(GNamedWidgetIface *iface) } +#endif + + +/****************************************************************************** +* * +* 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. * @@ -180,12 +235,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; @@ -213,12 +268,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; @@ -243,11 +298,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; @@ -257,23 +312,57 @@ GBinContent *g_loaded_content_get_content(const GLoadedContent *content) /****************************************************************************** * * * Paramètres : content = élément chargé à manipuler. * +* human = description humaine attendue ? * * * -* Description : Fournit le format associé à l'élément chargé. * +* Description : Décrit la nature du contenu reconnu pour l'élément chargé. * * * -* Retour : Format associé à l'élément chargé. * +* Retour : Classe de contenu associée à l'élément chargé. * * * * Remarques : - * * * ******************************************************************************/ -char *g_loaded_content_get_format_name(const GLoadedContent *content) +char *g_loaded_content_get_content_class(const GLoadedContent *content, bool human) { char *result; /* Contenu interne à renvoyer */ - GLoadedContentIface *iface; /* Interface utilisée */ + GLoadedContentClass *class; /* Classe de l'instance */ + + class = G_LOADED_CONTENT_GET_CLASS(content); + + result = class->get_content_class(content, human); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : content = contenu chargé à traiter. * +* connect = organise le lancement des connexions aux serveurs. * +* cache = précise si la préparation d'un rendu est demandée. * +* * +* Description : Crée une structure pour accompagner une tâche d'analyse. * +* * +* Retour : Structure d'accompagnement initialisée. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static analysis_data_t *create_analysis_data(GLoadedContent *content, bool connect, bool cache) +{ + analysis_data_t *result; /* Structure à retourner */ + + result = malloc(sizeof(analysis_data_t)); + + result->content = content; + g_object_ref(G_OBJECT(content)); - iface = G_LOADED_CONTENT_GET_IFACE(content); + result->connect = connect; + result->cache = cache; - result = iface->get_format_name(content); + result->success = true; return result; @@ -282,6 +371,66 @@ char *g_loaded_content_get_format_name(const GLoadedContent *content) /****************************************************************************** * * +* Paramètres : data = ensemble d'informations utiles à l'opération. * +* i = indice des éléments à traiter. * +* status = barre de statut à tenir informée. * +* id = identifiant du message affiché à l'utilisateur. * +* * +* Description : Assure l'analyse d'un contenu chargé en différé. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static bool process_analysis_with_data(analysis_data_t *data, size_t i, GtkStatusStack *status, activity_id_t id) +{ + GLoadedContentClass *class; /* Classe de l'instance */ + GWorkQueue *queue; /* Gestionnaire de différés */ + wgroup_id_t gid; /* Identifiant pour les tâches */ + + class = G_LOADED_CONTENT_GET_CLASS(data->content); + + queue = get_work_queue(); + + gid = g_work_queue_define_work_group(queue); + + 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); + + g_work_queue_delete_work_group(queue, gid); + + return data->success; + +} + + +/****************************************************************************** +* * +* Paramètres : data = données à supprimer de la mémoire. * +* * +* Description : Efface une structure d'accompagnement de tâche d'analyse. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void delete_analysis_data(analysis_data_t *data) +{ + g_clear_object(&data->content); + + free(data); + +} + + +/****************************************************************************** +* * * Paramètres : content = élément chargé à manipuler. * * connect = organise le lancement des connexions aux serveurs. * * cache = précise si la préparation d'un rendu est demandée. * @@ -296,13 +445,19 @@ char *g_loaded_content_get_format_name(const GLoadedContent *content) void g_loaded_content_analyze(GLoadedContent *content, bool connect, bool cache) { - GLoadedAnalysis *analysis; /* Analyse à mener */ + analysis_data_t *data; /* Données d'accompagnement */ + GSeqWork *analysis; /* Analyse à mener */ GWorkQueue *queue; /* Gestionnaire de différés */ - analysis = g_loaded_analysis_new(content, connect, cache); + data = create_analysis_data(content, connect, cache); + + analysis = g_gen_work_new_boolean(data, NO_ACTIVITY_ID, + (seq_work_bool_cb)process_analysis_with_data, &data->success); + + g_object_set_data_full(G_OBJECT(analysis), "analysis_data", data, (GDestroyNotify)delete_analysis_data); g_signal_connect(analysis, "work-completed", - G_CALLBACK(on_loaded_content_analysis_completed), content); + G_CALLBACK(on_loaded_content_analysis_completed), data); queue = get_work_queue(); @@ -314,7 +469,7 @@ void g_loaded_content_analyze(GLoadedContent *content, bool connect, bool cache) /****************************************************************************** * * * Paramètres : analysis = tâche d'analyse menée à bien. * -* content = contenu chargé dont l'analyse est terminée. * +* data = données associées à l'opération. * * * * Description : Acquitte la fin d'une tâche d'analyse différée et complète. * * * @@ -324,9 +479,9 @@ void g_loaded_content_analyze(GLoadedContent *content, bool connect, bool cache) * * ******************************************************************************/ -static void on_loaded_content_analysis_completed(GLoadedAnalysis *analysis, GLoadedContent *content) +static void on_loaded_content_analysis_completed(GSeqWork *analysis, analysis_data_t *data) { - g_signal_emit_by_name(content, "analyzed", analysis->success); + g_signal_emit_by_name(data->content, "analyzed", data->success); } @@ -348,12 +503,15 @@ static void on_loaded_content_analysis_completed(GLoadedAnalysis *analysis, GLoa bool g_loaded_content_analyze_and_wait(GLoadedContent *content, bool connect, bool cache) { bool result; /* Bilan à retourner */ - GLoadedAnalysis *analysis; /* Analyse à mener */ + analysis_data_t *data; /* Données d'accompagnement */ + GSeqWork *analysis; /* Analyse à mener */ GWorkQueue *queue; /* Gestionnaire de différés */ wgroup_id_t gid; /* Identifiant pour les tâches */ - analysis = g_loaded_analysis_new(content, connect, cache); - g_object_ref(G_OBJECT(analysis)); + data = create_analysis_data(content, connect, cache); + + analysis = g_gen_work_new_boolean(data, NO_ACTIVITY_ID, + (seq_work_bool_cb)process_analysis_with_data, &data->success); queue = get_work_queue(); @@ -365,8 +523,9 @@ bool g_loaded_content_analyze_and_wait(GLoadedContent *content, bool connect, bo g_work_queue_delete_work_group(queue, gid); - result = analysis->success; - g_object_unref(G_OBJECT(analysis)); + result = data->success; + + delete_analysis_data(data); return result; @@ -389,11 +548,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; @@ -434,6 +593,9 @@ char **g_loaded_content_detect_obfuscators(const GLoadedContent *content, bool v /* ---------------------------------------------------------------------------------- */ +#ifdef INCLUDE_GTK_SUPPORT + + /****************************************************************************** * * * Paramètres : content = contenu chargé à consulter. * @@ -449,11 +611,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; @@ -476,13 +638,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; @@ -504,11 +666,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; @@ -531,13 +693,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; @@ -560,11 +722,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)); @@ -589,181 +751,20 @@ 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; } - -/* ---------------------------------------------------------------------------------- */ -/* PHASE D'ANALYSE EN PARALLELE */ -/* ---------------------------------------------------------------------------------- */ - - -/* Indique le type défini pour les tâches d'analyse différée. */ -G_DEFINE_TYPE(GLoadedAnalysis, g_loaded_analysis, G_TYPE_DELAYED_WORK); - - -/****************************************************************************** -* * -* Paramètres : klass = classe à initialiser. * -* * -* Description : Initialise la classe des tâches d'analyse différées. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_loaded_analysis_class_init(GLoadedAnalysisClass *klass) -{ - GObjectClass *object; /* Autre version de la classe */ - GDelayedWorkClass *work; /* Version en classe parente */ - - object = G_OBJECT_CLASS(klass); - - object->dispose = (GObjectFinalizeFunc/* ! */)g_loaded_analysis_dispose; - object->finalize = (GObjectFinalizeFunc)g_loaded_analysis_finalize; - - work = G_DELAYED_WORK_CLASS(klass); - - work->run = (run_task_fc)g_loaded_analysis_process; - -} - - -/****************************************************************************** -* * -* Paramètres : analysis = instance à initialiser. * -* * -* Description : Initialise une tâche d'analyse de contenu différée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_loaded_analysis_init(GLoadedAnalysis *analysis) -{ - analysis->success = false; - -} - - -/****************************************************************************** -* * -* Paramètres : disass = instance d'objet GLib à traiter. * -* * -* Description : Supprime toutes les références externes. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_loaded_analysis_dispose(GLoadedAnalysis *analysis) -{ - g_clear_object(&analysis->content); - - G_OBJECT_CLASS(g_loaded_analysis_parent_class)->dispose(G_OBJECT(analysis)); - -} - - -/****************************************************************************** -* * -* Paramètres : analysis = instance d'objet GLib à traiter. * -* * -* Description : Procède à la libération totale de la mémoire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_loaded_analysis_finalize(GLoadedAnalysis *analysis) -{ - G_OBJECT_CLASS(g_loaded_analysis_parent_class)->finalize(G_OBJECT(analysis)); - -} - - -/****************************************************************************** -* * -* Paramètres : content = contenu chargé à traiter. * -* connect = organise le lancement des connexions aux serveurs. * -* cache = précise si la préparation d'un rendu est demandée. * -* * -* Description : Crée une tâche d'analyse de contenu différée. * -* * -* Retour : Tâche créée. * -* * -* Remarques : - * -* * -******************************************************************************/ - -static GLoadedAnalysis *g_loaded_analysis_new(GLoadedContent *content, bool connect, bool cache) -{ - GLoadedAnalysis *result; /* Tâche à retourner */ - - result = g_object_new(G_TYPE_LOADED_ANALYSIS, NULL); - - result->content = content; - g_object_ref(G_OBJECT(content)); - - result->connect = connect; - result->cache = cache; - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : analysis = analyse à mener. * -* status = barre de statut à tenir informée. * -* * -* Description : Assure l'analyse d'un contenu chargé en différé. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_loaded_analysis_process(GLoadedAnalysis *analysis, GtkStatusStack *status) -{ - GLoadedContentIface *iface; /* Interface utilisée */ - GWorkQueue *queue; /* Gestionnaire de différés */ - wgroup_id_t gid; /* Identifiant pour les tâches */ - - iface = G_LOADED_CONTENT_GET_IFACE(analysis->content); - - queue = get_work_queue(); - - gid = g_work_queue_define_work_group(queue); - - analysis->success = iface->analyze(analysis->content, analysis->connect, analysis->cache, gid, status); - - if (analysis->success) - handle_loaded_content(PGA_CONTENT_ANALYZED, analysis->content, gid, status); - - g_work_queue_delete_work_group(queue, gid); - -} +#endif @@ -772,6 +773,9 @@ static void g_loaded_analysis_process(GLoadedAnalysis *analysis, GtkStatusStack /* ---------------------------------------------------------------------------------- */ +#ifdef INCLUDE_GTK_SUPPORT + + /****************************************************************************** * * * Paramètres : panel = panneau affichant un contenu binaire. * @@ -887,3 +891,6 @@ GtkWidget *get_loaded_panel_from_built_view(GtkWidget *view) return result; } + + +#endif |