diff options
Diffstat (limited to 'src/analysis/line_comment.c')
-rw-r--r-- | src/analysis/line_comment.c | 62 |
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. * |