diff options
Diffstat (limited to 'src/glibext')
-rw-r--r-- | src/glibext/gcodebuffer.c | 46 | ||||
-rw-r--r-- | src/glibext/gcodebuffer.h | 6 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/glibext/gcodebuffer.c b/src/glibext/gcodebuffer.c index 97d6505..fe00e2d 100644 --- a/src/glibext/gcodebuffer.c +++ b/src/glibext/gcodebuffer.c @@ -97,6 +97,8 @@ struct _GCodeBuffer size_t count; /* Quantité en cache */ size_t used; /* Quantité utilisée */ + size_t indent; /* Indentation des lignes */ + }; /* Tampon pour code désassemblé (classe) */ @@ -420,6 +422,7 @@ static size_t g_code_buffer_get_index_from_address(GCodeBuffer *buffer, vmpa_t a GBufferLine *g_code_buffer_append_new_line(GCodeBuffer *buffer, vmpa_t addr) { GBufferLine *result; /* Instance à retourner */ + size_t i; /* Boucle de parcours */ if (buffer->used == buffer->count) { @@ -431,6 +434,9 @@ GBufferLine *g_code_buffer_append_new_line(GCodeBuffer *buffer, vmpa_t addr) result = g_buffer_line_new(addr); buffer->lines[buffer->used++] = result; + for (i = 0; i < buffer->indent; i++) + g_buffer_line_insert_text(result, BLC_ASSEMBLY_HEAD, " ", 4, RTT_RAW); + return result; } @@ -438,6 +444,46 @@ GBufferLine *g_code_buffer_append_new_line(GCodeBuffer *buffer, vmpa_t addr) /****************************************************************************** * * +* Paramètres : buffer = composant GTK à mettre à jour. * +* * +* Description : Augmente l'indentation des prochaines lignes. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_code_buffer_inc_indentation(GCodeBuffer *buffer) +{ + buffer->indent++; + +} + + +/****************************************************************************** +* * +* Paramètres : buffer = composant GTK à mettre à jour. * +* * +* Description : Diminue l'indentation des prochaines lignes. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_code_buffer_dec_indentation(GCodeBuffer *buffer) +{ + /* BUG_ON(buffer->indent == 0) */ + + buffer->indent--; + +} + + +/****************************************************************************** +* * * Paramètres : buffer = tampon de données à utiliser. * * start = première adresse visée ou 0. * * end = dernière adresse visée ou VMPA_MAX. * diff --git a/src/glibext/gcodebuffer.h b/src/glibext/gcodebuffer.h index 3fc6155..1cac790 100644 --- a/src/glibext/gcodebuffer.h +++ b/src/glibext/gcodebuffer.h @@ -62,6 +62,12 @@ GCodeBuffer *g_code_buffer_new(void); /* Ajoute une nouvelle ligne à un tampon pour code désassemblé. */ GBufferLine *g_code_buffer_append_new_line(GCodeBuffer *, vmpa_t); +/* Augmente l'indentation des prochaines lignes. */ +void g_code_buffer_inc_indentation(GCodeBuffer *); + +/* Diminue l'indentation des prochaines lignes. */ +void g_code_buffer_dec_indentation(GCodeBuffer *); + /* Traitement d'une ligne parcourue. */ typedef bool (* process_line_fc) (GCodeBuffer *, GBufferLine *, void *); |