summaryrefslogtreecommitdiff
path: root/src/analysis/line_comment.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/line_comment.c')
-rw-r--r--src/analysis/line_comment.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/analysis/line_comment.c b/src/analysis/line_comment.c
index aa6ae10..8af1777 100644
--- a/src/analysis/line_comment.c
+++ b/src/analysis/line_comment.c
@@ -57,6 +57,9 @@ static void g_comment_line_class_init(GCommentLineClass *);
/* Initialise la classe des lignes de commentaires entière. */
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]);
@@ -104,6 +107,7 @@ 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);
@@ -116,6 +120,64 @@ static void g_comment_line_init(GCommentLine *line)
/******************************************************************************
* *
* Paramètres : line = ligne de représentation à actualiser. *
+* options = options de rendu. *
+* rendering = support effectif final des lignes de code. *
+* stream = flux ouvert en écriture. *
+* *
+* Description : Ajoute du texte simple à un fichier ouvert en écriture. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_comment_line_add_text(GCommentLine *line, GRenderingOptions *options, MainRendering rendering, FILE *stream)
+{
+ GContentExporter *exporter; /* Autre vision de la ligne */
+ 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é */
+
+ exporter = G_CONTENT_EXPORTER(line);
+
+ show_address = g_rendering_options_has_to_show_address(options, rendering);
+ show_code = g_rendering_options_has_to_show_code(options, rendering);
+
+ /* Eventuelle adresse virtuelle ou physique */
+
+ if (show_address)
+ {
+ msize = g_arch_processor_get_memory_size(g_rendering_options_get_processor(options));
+
+ len = vmpa_to_string(G_RENDERING_LINE(line)->offset, msize, address);
+
+ g_content_exporter_insert_text(exporter, stream, address, len, RTT_NONE);
+ g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE);
+
+ }
+
+ /* Eventuel code brut (sauté) */
+
+ if (show_code)
+ g_content_exporter_insert_text(exporter, stream, "\t", 1, RTT_NONE);
+
+ /* Commentaire proprement dit */
+
+ g_content_exporter_insert_text(exporter, stream, "; ", 2, RTT_COMMENT);
+
+ len = strlen(line->comment);
+
+ g_content_exporter_insert_text(exporter, stream, line->comment, len, RTT_COMMENT);
+
+}
+
+
+/******************************************************************************
+* *
+* 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. *