diff options
Diffstat (limited to 'src/glibext/generators/prologue.c')
-rw-r--r-- | src/glibext/generators/prologue.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/glibext/generators/prologue.c b/src/glibext/generators/prologue.c index 33a0c4c..f88393b 100644 --- a/src/glibext/generators/prologue.c +++ b/src/glibext/generators/prologue.c @@ -31,6 +31,7 @@ #include "../gbufferline.h" #include "../linegen-int.h" #include "../linesegment.h" +#include "../../format/executable.h" @@ -39,6 +40,8 @@ struct _GIntroGenerator { GObject parent; /* A laisser en premier */ + vmpa2t addr; /* Position première */ + char **text; /* Lignes brutes à représenter */ size_t count; /* Quantité de ces lignes */ @@ -210,18 +213,24 @@ static void g_intro_generator_finalize(GIntroGenerator *generator) * * * Description : Crée un nouveau générateur de lignes d'introduction. * * * -* Retour : Composant GLib créé. * +* Retour : Composant GLib créé ou NULL en cas d'échec. * * * * Remarques : - * * * ******************************************************************************/ -GIntroGenerator *g_intro_generator_new(const GCodingLanguage *lang, char **text, size_t count) +GIntroGenerator *g_intro_generator_new(const GBinFormat *format, const GCodingLanguage *lang, char **text, size_t count) { - GIntroGenerator *result; /* Composant à retourner */ + GIntroGenerator *result; /* Composant à retourner */ + vmpa2t first; /* Première position */ + + if (!g_exe_format_translate_offset_into_vmpa(G_EXE_FORMAT(format), 0, &first)) + return NULL; result = g_object_new(G_TYPE_INTRO_GENERATOR, NULL); + copy_vmpa(&result->addr, &first); + result->text = text; result->count = count; @@ -273,7 +282,7 @@ static size_t g_intro_generator_count_lines(const GIntroGenerator *generator) static void g_intro_generator_compute_addr(const GIntroGenerator *generator, gint x, vmpa2t *addr, size_t index, size_t repeat) { - init_vmpa(addr, 0, 0); + copy_vmpa(addr, &generator->addr); } @@ -295,12 +304,7 @@ static void g_intro_generator_compute_addr(const GIntroGenerator *generator, gin static int g_intro_generator_contains_addr(const GIntroGenerator *generator, const vmpa2t *addr, size_t index, size_t repeat) { - /** - * Les lignes générées sont purement artificielles et sans attache. - * Elles n'existent donc pas. - */ - - return 1; + return cmp_vmpa(addr, &generator->addr); } |