summaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis')
-rw-r--r--src/analysis/exporter-int.h16
-rw-r--r--src/analysis/exporter.c191
-rw-r--r--src/analysis/exporter.h6
-rw-r--r--src/analysis/line_code.c108
-rw-r--r--src/analysis/line_comment.c66
-rw-r--r--src/analysis/line_prologue.c35
6 files changed, 1 insertions, 421 deletions
diff --git a/src/analysis/exporter-int.h b/src/analysis/exporter-int.h
index 421770e..5198e4f 100644
--- a/src/analysis/exporter-int.h
+++ b/src/analysis/exporter-int.h
@@ -35,12 +35,6 @@ typedef void (* add_text_fc) (GContentExporter *, GRenderingOptions *, MainRende
/* Ajoute à un texte GTK le contenu de la ligne de rendu. */
typedef void (* export_buffer_fc) (GContentExporter *, GBufferLine *, GRenderingOptions *);
-/* Ajoute à un texte GTK le contenu de la ligne de rendu. */
-typedef void (* add_to_gtk_buffer_fc) (GContentExporter *, MainRendering, GtkTextBuffer *, GtkTextIter *, size_t [SAR_COUNT]);
-
-/* Traduit une instruction en version humainement lisible. */
-typedef void (* add_arch_to_gtk_buffer_fc) (const GContentExporter *, const GExeFormat *, AsmSyntax, GtkTextBuffer *, GtkTextIter *);
-
/* Exportation de contenu (instance) */
@@ -49,10 +43,7 @@ struct _GContentExporter
GObject parent; /* A laisser en premier */
add_text_fc add_text; /* Remplissage simple */
- export_buffer_fc export_buffer; /* Constitution du texte GTK */
- add_to_gtk_buffer_fc add_to_gtk_buffer; /* Constitution du texte GTK */
-
- add_arch_to_gtk_buffer_fc add_arch_to_gtk_buffer; /* Constitution... */
+ export_buffer_fc export_buffer; /* Constitution du texte GLib */
};
@@ -65,8 +56,6 @@ struct _GContentExporterClass
PangoContext *context; /* Contexte graphique Pango */
PangoAttrList *attribs[RTT_COUNT]; /* Décorateurs pour tampons */
- GtkTextTag *tags[RTT_COUNT]; /* Décorateurs pour les textes */
-
};
@@ -76,9 +65,6 @@ void g_content_exporter_insert_text(GContentExporter *, FILE *, const char *, si
/* Ajoute du texte à un tampon de code via l'instance spécifiée. */
void g_content_exporter_insert_into_buffer(GContentExporter *, GBufferLine *, BufferLineColumn, const char *, size_t, RenderingTagType);
-/* Ajoute du texte à un texte GTK via l'instance spécifiée. */
-void g_content_exporter_insert_with_gtk_tag(GContentExporter *, GtkTextBuffer *, GtkTextIter *, const char *, size_t, RenderingTagType);
-
#endif /* _ANALYSIS_EXPORTER_INT_H */
diff --git a/src/analysis/exporter.c b/src/analysis/exporter.c
index 5820fd6..b6d773a 100644
--- a/src/analysis/exporter.c
+++ b/src/analysis/exporter.c
@@ -48,8 +48,6 @@ static void g_content_exporter_class_init(GContentExporterClass *klass)
{
GdkScreen *screen; /* Ecran pour GDK */
PangoFontDescription *font_desc; /* Police de caractère */
- GtkTextTagTable *table; /* Seule table globale valable */
- GtkTextTag *tag;
/* Exportation vers un tampon de code */
@@ -87,89 +85,6 @@ static void g_content_exporter_class_init(GContentExporterClass *klass)
klass->attribs[RTT_VAR_NAME] = pango_attr_list_new();
-
-
- /* Décorateurs GTK */
-
- table = get_gtk_tag_table();
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "green", NULL);
-
- klass->tags[RTT_COMMENT] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "gray", NULL);
-
- klass->tags[RTT_RAW_CODE] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "red", NULL);
-
- klass->tags[RTT_INSTRUCTION] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "purple", NULL);
-
- klass->tags[RTT_IMMEDIATE] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "blue", NULL);
-
- klass->tags[RTT_REGISTER] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "blue", "background", "black", NULL);
-
- klass->tags[RTT_HOOK] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "white", "background", "black", NULL);
-
- klass->tags[RTT_SIGNS] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "red", "background", "black", NULL);
-
- klass->tags[RTT_LTGT] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "black", NULL);
-
- klass->tags[RTT_SEGMENT] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "orange", NULL);
-
- klass->tags[RTT_STRING] = tag;
- gtk_text_tag_table_add(table, tag);
-
- tag = gtk_text_tag_new(NULL);
-
- g_object_set(G_OBJECT(tag), "foreground", "black", NULL);
-
- klass->tags[RTT_VAR_NAME] = tag;
- gtk_text_tag_table_add(table, tag);
-
}
@@ -193,33 +108,6 @@ static void g_content_exporter_init(GContentExporter *exporter)
/******************************************************************************
* *
-* Paramètres : table = éventuelle instance à enregistrer. *
-* *
-* Description : Définit et/ou renvoie le singleton pour les marques de texte.*
-* *
-* Retour : Table courante à utiliser. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkTextTagTable *_get_gtk_tag_table(GtkTextTagTable *table)
-{
- static GtkTextTagTable *result = NULL; /* Table valable à renvoyer */
-
- if (table != NULL)
- {
- if (result != NULL) /* TODO : free() */;
- result = table;
- }
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : exporter = instance sachant exporter son contenu. *
* stream = flux ouvert en écriture. *
* text = texte à insérer dans l'existant. *
@@ -276,37 +164,6 @@ void g_content_exporter_insert_into_buffer(GContentExporter *exporter, GBufferLi
/******************************************************************************
* *
-* Paramètres : exporter = instance sachant exporter son contenu. *
-* buffer = zone de texte à venir compléter. *
-* iter = point d'insertion du nouveau texte. [OUT] *
-* text = texte à insérer dans l'existant. *
-* length = taille du texte à traiter. *
-* tag = type de décorateur à utiliser. *
-* *
-* Description : Ajoute du texte à un texte GTK via l'instance spécifiée. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_content_exporter_insert_with_gtk_tag(GContentExporter *exporter, GtkTextBuffer *buffer, GtkTextIter *iter, const char *text, size_t length, RenderingTagType tag)
-{
- size_t init; /* Point d'insertion initial */
-
- if (tag != RTT_NONE)
- gtk_text_buffer_insert_with_tags(buffer, iter, text, length,
- G_CONTENT_EXPORTER_GET_CLASS(exporter)->tags[tag],
- NULL);
-
- else gtk_text_buffer_insert_with_tags(buffer, iter, text, length, NULL);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : exporter = instance sachant exporter son contenu. *
* options = options de rendu. *
* rendering = support effectif final des lignes de code. *
@@ -348,51 +205,3 @@ void g_content_exporter_to_buffer(GContentExporter *exporter, GBufferLine *line,
exporter->export_buffer(exporter, line, options);
}
-
-
-/******************************************************************************
-* *
-* Paramètres : exporter = instance sachant exporter son contenu. *
-* rendering = support effectif final des lignes de code. *
-* buffer = zone de texte à venir compléter. *
-* iter = point d'insertion du nouveau texte. *
-* lengths = taille des différentes composantes de la ligne. *
-* *
-* Description : Ajoute à un texte GTK le contenu de l'instance spécifiée. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_content_exporter_add_to_gtk_buffer(GContentExporter *exporter, MainRendering rendering, GtkTextBuffer *buffer, GtkTextIter *iter, size_t lengths[SAR_COUNT])
-{
- if (exporter->add_to_gtk_buffer != NULL)
- exporter->add_to_gtk_buffer(exporter, rendering, buffer, iter, lengths);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : exporter = instance sachant exporter son contenu. *
-* format = format du binaire manipulé. *
-* syntax = type de représentation demandée. *
-* buffer = zone de texte à venir compléter. *
-* iter = point d'insertion du nouveau texte. *
-* *
-* Description : Ajoute à un texte GTK le contenu d'une architecture. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_content_exporter_add_arch_to_gtk_buffer(const GContentExporter *exporter, const GExeFormat *format, AsmSyntax syntax, GtkTextBuffer *buffer, GtkTextIter *iter)
-{
- if (exporter->add_arch_to_gtk_buffer != NULL)
- exporter->add_arch_to_gtk_buffer(exporter, format, syntax, buffer, iter);
-
-}
diff --git a/src/analysis/exporter.h b/src/analysis/exporter.h
index 297fd99..7c90cad 100644
--- a/src/analysis/exporter.h
+++ b/src/analysis/exporter.h
@@ -95,12 +95,6 @@ void g_content_exporter_add_text(GContentExporter *, GRenderingOptions *, MainRe
/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */
void g_content_exporter_to_buffer(GContentExporter *, GBufferLine *, GRenderingOptions *);
-/* Ajoute à un texte GTK le contenu de l'instance spécifiée. */
-void g_content_exporter_add_to_gtk_buffer(GContentExporter *, MainRendering, GtkTextBuffer *, GtkTextIter *, size_t [SAR_COUNT]);
-
-/* Ajoute à un texte GTK le contenu d'une architecture. */
-void g_content_exporter_add_arch_to_gtk_buffer(const GContentExporter *, const GExeFormat *, AsmSyntax, GtkTextBuffer *, GtkTextIter *);
-
#endif /* _ANALYSIS_EXPORTER_H */
diff --git a/src/analysis/line_code.c b/src/analysis/line_code.c
index 4761522..7630366 100644
--- a/src/analysis/line_code.c
+++ b/src/analysis/line_code.c
@@ -64,9 +64,6 @@ static void g_code_line_add_text(GCodeLine *, GRenderingOptions *, MainRendering
/* Ajoute à un tampon GLib le contenu de l'instance spécifiée. */
static void g_code_line_to_buffer(GCodeLine *, GBufferLine *, GRenderingOptions *);
-/* Ajoute à un texte GTK le contenu de la ligne de code. */
-static void g_code_line_add_to_gtk_buffer(GCodeLine *, MainRendering, GtkTextBuffer *, GtkTextIter *, size_t [SAR_COUNT]);
-
/* Indique le type définit par la GLib pour la ligne. */
@@ -113,7 +110,6 @@ static void g_code_line_init(GCodeLine *line)
exporter_parent->add_text = (add_text_fc)g_code_line_add_text;
exporter_parent->export_buffer = (export_buffer_fc)g_code_line_to_buffer;
- exporter_parent->add_to_gtk_buffer = (add_to_gtk_buffer_fc)g_code_line_add_to_gtk_buffer;
line_parent = G_RENDERING_LINE(line);
@@ -290,110 +286,6 @@ static void g_code_line_to_buffer(GCodeLine *line, GBufferLine *buffer, GRenderi
/******************************************************************************
* *
-* Paramètres : line = ligne de représentation à actualiser. *
-* rendering = support effectif final des lignes de code. *
-* buffer = zone de texte à venir compléter. *
-* iter = point d'insertion du nouveau texte. *
-* lengths = taille des différentes composantes de la ligne. *
-* *
-* Description : Ajoute à un texte GTK le contenu de la ligne de code. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_code_line_add_to_gtk_buffer(GCodeLine *line, MainRendering rendering, GtkTextBuffer *buffer, GtkTextIter *iter, size_t lengths[SAR_COUNT])
-{
- GContentExporter *exporter; /* Autre vision de la ligne #1 */
- GRenderingLine *basic; /* Autre vision de la ligne #2 */
- bool show_address; /* Affichage de l'adresse ? */
- bool show_code; /* Affichage du code brut ? */
- MemoryDataSize msize; /* Taille du bus d'adresses */
- char address[VMPA_MAX_SIZE]; /* Adresse au format texte */
- size_t len; /* Taille de l'élément inséré */
- const bin_t *content; /* Contenu binaire global */
- off_t bin_offset; /* Début de l'instruction */
- off_t bin_len; /* Taille d'instruction */
- char *bin_code; /* Tampon du code binaire */
- off_t i; /* Boucle de parcours */
-
- exporter = G_CONTENT_EXPORTER(line);
- basic = G_RENDERING_LINE(line);
-
- show_address = g_rendering_options_has_to_show_address(line->options, rendering);
- show_code = g_rendering_options_has_to_show_code(line->options, rendering);
-
- /* Eventuelle adresse virtuelle ou physique */
-
- if (show_address)
- {
- msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(line->options));
-
- len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address);
- lengths[SAR_ADDRESS] = len;
-
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter,
- address, len, RTT_NONE);
-
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter,
- "\t", 1, RTT_NONE);
-
- }
-
- /* Eventuel code brut */
-
- if (show_code)
- {
- content = g_binary_format_get_content(G_BIN_FORMAT(g_rendering_options_get_format(line->options)), NULL);
- g_arch_instruction_get_location(line->instr, &bin_offset, &bin_len, NULL);
-
- lengths[SAR_CODE] = MAX(lengths[SAR_CODE], bin_len * 3 - 1);
-
- bin_code = (char *)calloc(bin_len * 3, sizeof(char));
-
- for (i = 0; i < bin_len; i++)
- {
- if ((i + 1) < bin_len)
- snprintf(&bin_code[i * (2 + 1)], 4, "%02hhx ", content[bin_offset + i]);
- else
- snprintf(&bin_code[i * (2 + 1)], 3, "%02hhx", content[bin_offset + i]);
- }
-
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter,
- bin_code, bin_len * 3 - 1, RTT_RAW_CODE);
-
- free(bin_code);
-
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter,
- "\t", 1, RTT_NONE);
-
- }
-
- /* Instruction proprement dite */
-
- g_content_exporter_add_arch_to_gtk_buffer(G_CONTENT_EXPORTER(line->instr),
- g_rendering_options_get_format(line->options),
- ASX_INTEL/*FIXME*/, buffer, iter);
-
- lengths[SAR_INSTRUCTION] = MAX(lengths[SAR_INSTRUCTION], 4 /* FIXME */);
-
- /* Commentaire ? */
-
- if (basic->comment != NULL)
- {
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter, "\t", 1, RTT_NONE);
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter, "; ", 2, RTT_COMMENT);
- g_content_exporter_insert_with_gtk_tag(exporter, buffer, iter, basic->comment,
- strlen(basic->comment), RTT_COMMENT);
- }
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : offset = emplacement physique ou en mémoire. *
* instr = instruction à représenter. *
* options = paramétrage du rendu. *
diff --git a/src/analysis/line_comment.c b/src/analysis/line_comment.c
index 8af1777..5bdf29a 100644
--- a/src/analysis/line_comment.c
+++ b/src/analysis/line_comment.c
@@ -60,9 +60,6 @@ static void g_comment_line_init(GCommentLine *);
/* Ajoute du texte simple à un fichier ouvert en écriture. */
static void g_comment_line_add_text(GCommentLine *, GRenderingOptions *, MainRendering, FILE *);
-/* Ajoute à un texte GTK le contenu de la ligne de commentaires. */
-static void g_comment_line_add_to_gtk_buffer(GCommentLine *, MainRendering, GtkTextBuffer *, GtkTextIter *, size_t [SAR_COUNT]);
-
/* Indique le type définit par la GLib pour la ligne. */
@@ -108,7 +105,6 @@ static void g_comment_line_init(GCommentLine *line)
exporter_parent = G_CONTENT_EXPORTER(line);
exporter_parent->add_text = (add_text_fc)g_comment_line_add_text;
- exporter_parent->add_to_gtk_buffer = (add_to_gtk_buffer_fc)g_comment_line_add_to_gtk_buffer;
line_parent = G_RENDERING_LINE(line);
@@ -177,68 +173,6 @@ static void g_comment_line_add_text(GCommentLine *line, GRenderingOptions *optio
/******************************************************************************
* *
-* Paramètres : line = ligne de représentation à actualiser. *
-* rendering = support effectif final des lignes de code. *
-* buffer = zone de texte à venir compléter. *
-* iter = point d'insertion du nouveau texte. *
-* lengths = taille des différentes composantes de la ligne. *
-* *
-* Description : Ajoute à un texte GTK le contenu de la ligne de commentaires.*
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_comment_line_add_to_gtk_buffer(GCommentLine *line, MainRendering rendering, GtkTextBuffer *buffer, GtkTextIter *iter, size_t lengths[SAR_COUNT])
-{
- bool show_address; /* Affichage de l'adresse ? */
- bool show_code; /* Affichage du code brut ? */
- MemoryDataSize msize; /* Taille du bus d'adresses */
- char address[VMPA_MAX_SIZE]; /* Adresse au format texte */
- size_t len; /* Taille de l'élément inséré */
-
- show_address = g_rendering_options_has_to_show_address(line->options, rendering);
- show_code = g_rendering_options_has_to_show_code(line->options, rendering);
-
- /* Eventuelle adresse virtuelle ou physique */
-
- if (show_address)
- {
- msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(line->options));
-
- len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address);
-
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- address, len, RTT_NONE);
-
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- "\t", 1, RTT_NONE);
-
- }
-
- /* Eventuel code brut (sauté) */
-
- if (show_code)
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- "\t", 1, RTT_NONE);
-
- /* Commentaire proprement dit */
-
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- "; ", 2, RTT_COMMENT);
-
- len = strlen(line->comment);
-
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- line->comment, len, RTT_COMMENT);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : offset = emplacement physique ou en mémoire. *
* comment = texte à afficher au final. *
* options = paramétrage du rendu. *
diff --git a/src/analysis/line_prologue.c b/src/analysis/line_prologue.c
index 007804b..d530a44 100644
--- a/src/analysis/line_prologue.c
+++ b/src/analysis/line_prologue.c
@@ -59,9 +59,6 @@ static void g_prologue_line_init(GPrologueLine *);
/* Ajoute du texte simple à un fichier ouvert en écriture. */
static void g_prologue_line_add_text(GPrologueLine *, GRenderingOptions *, MainRendering, FILE *);
-/* Ajoute à un texte GTK le contenu de la ligne d'ouverture. */
-static void g_prologue_line_add_to_gtk_buffer(GPrologueLine *, MainRendering, GtkTextBuffer *, GtkTextIter *, size_t [SAR_COUNT]);
-
/* Indique le type définit par la GLib pour la ligne. */
@@ -107,7 +104,6 @@ static void g_prologue_line_init(GPrologueLine *line)
exporter_parent = G_CONTENT_EXPORTER(line);
exporter_parent->add_text = (add_text_fc)g_prologue_line_add_text;
- exporter_parent->add_to_gtk_buffer = (add_to_gtk_buffer_fc)g_prologue_line_add_to_gtk_buffer;
line_parent = G_RENDERING_LINE(line);
@@ -148,37 +144,6 @@ static void g_prologue_line_add_text(GPrologueLine *line, GRenderingOptions *opt
/******************************************************************************
* *
-* Paramètres : line = ligne de représentation à actualiser. *
-* rendering = support effectif final des lignes de code. *
-* buffer = zone de texte à venir compléter. *
-* iter = point d'insertion du nouveau texte. *
-* lengths = taille des différentes composantes de la ligne. *
-* *
-* Description : Ajoute à un texte GTK le contenu de la ligne d'ouverture. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_prologue_line_add_to_gtk_buffer(GPrologueLine *line, MainRendering rendering, GtkTextBuffer *buffer, GtkTextIter *iter, size_t lengths[SAR_COUNT])
-{
- size_t len; /* Taille de l'élément inséré */
-
- len = strlen(line->comment);
-
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- "; ", 2, RTT_COMMENT);
-
- g_content_exporter_insert_with_gtk_tag(G_CONTENT_EXPORTER(line), buffer, iter,
- line->comment, len, RTT_COMMENT);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : comment = texte à afficher au final. *
* *
* Description : Crée une des lignes de descriptions initiales. *