summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-05-10 20:44:30 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-05-10 20:44:30 (GMT)
commit90e0f7ac04c1622f226dda57a3329b6fe98307e8 (patch)
tree68313927f67ed3f1d903562e1760d32a902f775a /src/glibext
parent8e76324b01e5b4979f346f0bc8c84372477a3d38 (diff)
Removed the link to binary content used for printing from instructions.
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/gbinportion.c5
-rw-r--r--src/glibext/gbuffercache.c36
-rw-r--r--src/glibext/gbuffercache.h2
-rw-r--r--src/glibext/generators/prologue.c5
-rw-r--r--src/glibext/generators/rborder.c5
-rw-r--r--src/glibext/linegen-int.h2
-rw-r--r--src/glibext/linegen.c5
-rw-r--r--src/glibext/linegen.h3
8 files changed, 41 insertions, 22 deletions
diff --git a/src/glibext/gbinportion.c b/src/glibext/gbinportion.c
index b94b0f6..4a54a9e 100644
--- a/src/glibext/gbinportion.c
+++ b/src/glibext/gbinportion.c
@@ -111,7 +111,7 @@ static int g_binary_portion_contains_addr(const GBinPortion *, const vmpa2t *, s
static BufferLineFlags g_binary_portion_get_flags(const GBinPortion *, size_t, size_t);
/* Imprime dans une ligne de rendu le contenu représenté. */
-static void g_binary_portion_print(GBinPortion *, GBufferLine *, size_t, size_t);
+static void g_binary_portion_print(GBinPortion *, GBufferLine *, size_t, size_t, const GBinContent *);
@@ -1066,6 +1066,7 @@ static BufferLineFlags g_binary_portion_get_flags(const GBinPortion *portion, si
* line = ligne de rendu à compléter. *
* index = indice de cette même ligne dans le tampon global. *
* repeat = indice d'utilisations successives du générateur. *
+* content = éventuel contenu binaire brut à imprimer. *
* *
* Description : Imprime dans une ligne de rendu le contenu représenté. *
* *
@@ -1075,7 +1076,7 @@ static BufferLineFlags g_binary_portion_get_flags(const GBinPortion *portion, si
* *
******************************************************************************/
-static void g_binary_portion_print(GBinPortion *portion, GBufferLine *line, size_t index, size_t repeat)
+static void g_binary_portion_print(GBinPortion *portion, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content)
{
assert(repeat < portion->lcount);
diff --git a/src/glibext/gbuffercache.c b/src/glibext/gbuffercache.c
index 926d034..fd7c987 100644
--- a/src/glibext/gbuffercache.c
+++ b/src/glibext/gbuffercache.c
@@ -84,7 +84,7 @@ static void get_cache_info_addr(const cache_info *, size_t, gint, vmpa2t *);
static void on_line_ref_toggle(cache_info *, GBufferLine *, gboolean);
/* Fournit la ligne de tampon correspondant aux générateurs. */
-static GBufferLine *get_cache_info_line(cache_info *, size_t);
+static GBufferLine *get_cache_info_line(cache_info *, size_t, const GBinContent *);
/* Force la réinitialisation d'une éventuelle ligne cachée. */
static void _reset_cache_info_line_unlocked(cache_info *);
@@ -102,6 +102,8 @@ struct _GBufferCache
{
GObject parent; /* A laisser en premier */
+ const GBinContent *content; /* Contenu binaire global */
+
cache_info *lines; /* Liste des lignes intégrées */
size_t count; /* Quantité en cache */
size_t used; /* Quantité utilisée */
@@ -410,8 +412,9 @@ static void on_line_ref_toggle(cache_info *info, GBufferLine *line, gboolean las
/******************************************************************************
* *
-* Paramètres : info = informations sur une ligne à venir manipuler. *
-* index = indice de la ligne à constituer. *
+* Paramètres : info = informations sur une ligne à venir manipuler. *
+* index = indice de la ligne à constituer. *
+* content = éventuel contenu binaire brut à imprimer. *
* *
* Description : Fournit la ligne de tampon correspondant aux générateurs. *
* *
@@ -421,7 +424,7 @@ static void on_line_ref_toggle(cache_info *info, GBufferLine *line, gboolean las
* *
******************************************************************************/
-static GBufferLine *get_cache_info_line(cache_info *info, size_t index)
+static GBufferLine *get_cache_info_line(cache_info *info, size_t index, const GBinContent *content)
{
GBufferLine *result; /* Construction à retourner */
size_t i; /* Boucle de parcours */
@@ -437,11 +440,13 @@ static GBufferLine *get_cache_info_line(cache_info *info, size_t index)
g_object_add_toggle_ref(G_OBJECT(result), (GToggleNotify)on_line_ref_toggle, info);
if (info->count == 1)
- g_line_generator_print(info->generator.instance, result, index, info->generator.repeat);
+ g_line_generator_print(info->generator.instance, result, index,
+ info->generator.repeat, content);
else
for (i = 0; i < info->count; i++)
- g_line_generator_print(info->generators[i].instance, result, index, info->generators[i].repeat);
+ g_line_generator_print(info->generators[i].instance, result, index,
+ info->generators[i].repeat, content);
info->line = result;
@@ -590,6 +595,9 @@ static void g_buffer_cache_dispose(GBufferCache *cache)
cache_info *info; /* Accès directe à une ligne */
size_t j; /* Boucle de parcours #2 */
+ if (cache->content != NULL)
+ g_object_unref(G_OBJECT(cache->content));
+
for (i = 0; i < cache->used; i++)
{
info = &cache->lines[i];
@@ -649,7 +657,7 @@ static void g_buffer_cache_finalize(GBufferCache *cache)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : content = éventuel contenu binaire brut à référencer. *
* *
* Description : Crée un nouveau composant de tampon pour code désassemblé. *
* *
@@ -659,12 +667,18 @@ static void g_buffer_cache_finalize(GBufferCache *cache)
* *
******************************************************************************/
-GBufferCache *g_buffer_cache_new(void)
+GBufferCache *g_buffer_cache_new(const GBinContent *content)
{
GBufferCache *result; /* Composant à retourner */
result = g_object_new(G_TYPE_BUFFER_CACHE, NULL);
+ if (content != NULL)
+ {
+ result->content = content;
+ g_object_ref(G_OBJECT(content));
+ }
+
return result;
}
@@ -1325,7 +1339,7 @@ GBufferLine *g_buffer_cache_find_line_by_index(const GBufferCache *cache, size_t
GBufferLine *result; /* Ligne trouvée à retourner */
if (index < cache->used)
- result = get_cache_info_line(&cache->lines[index], index);
+ result = get_cache_info_line(&cache->lines[index], index, cache->content);
else
result = NULL;
@@ -1352,7 +1366,7 @@ void g_buffer_cache_collect_widths(GBufferCache *cache, size_t index, line_width
{
GBufferLine *line; /* Ligne éphémère à mesurer */
- line = get_cache_info_line(&cache->lines[index], index);
+ line = get_cache_info_line(&cache->lines[index], index, cache->content);
g_buffer_line_collect_widths(line, summary);
@@ -1416,7 +1430,7 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s
if (i == first || (g_buffer_cache_get_line_flags(cache, i) & BLF_WIDTH_MANAGER))
g_width_tracker_get_local_width_summary(cache->tracker, i, &summary);
- line = get_cache_info_line(info, i);
+ line = get_cache_info_line(info, i, cache->content);
g_buffer_line_draw(line, cr, &summary, class->text_pos, y, display, list);
diff --git a/src/glibext/gbuffercache.h b/src/glibext/gbuffercache.h
index 85477e1..061d1b1 100644
--- a/src/glibext/gbuffercache.h
+++ b/src/glibext/gbuffercache.h
@@ -57,7 +57,7 @@ typedef struct _GBufferCacheClass GBufferCacheClass;
GType g_buffer_cache_get_type(void);
/* Crée un nouveau composant de tampon pour code désassemblé. */
-GBufferCache *g_buffer_cache_new(void);
+GBufferCache *g_buffer_cache_new(const GBinContent *);
/* Fournit la hauteur d'impression d'une ligne visualisée. */
gint g_buffer_cache_get_line_height(const GBufferCache *);
diff --git a/src/glibext/generators/prologue.c b/src/glibext/generators/prologue.c
index f88393b..03db327 100644
--- a/src/glibext/generators/prologue.c
+++ b/src/glibext/generators/prologue.c
@@ -83,7 +83,7 @@ static int g_intro_generator_contains_addr(const GIntroGenerator *, const vmpa2t
static BufferLineFlags g_intro_generator_get_flags(const GIntroGenerator *, size_t, size_t);
/* Imprime dans une ligne de rendu le contenu représenté. */
-static void g_intro_generator_print(GIntroGenerator *, GBufferLine *, size_t, size_t);
+static void g_intro_generator_print(GIntroGenerator *, GBufferLine *, size_t, size_t, const GBinContent *);
@@ -336,6 +336,7 @@ static BufferLineFlags g_intro_generator_get_flags(const GIntroGenerator *genera
* line = ligne de rendu à compléter. *
* index = indice de cette même ligne dans le tampon global.*
* repeat = indice d'utilisations successives du générateur. *
+* content = éventuel contenu binaire brut à imprimer. *
* *
* Description : Imprime dans une ligne de rendu le contenu représenté. *
* *
@@ -345,7 +346,7 @@ static BufferLineFlags g_intro_generator_get_flags(const GIntroGenerator *genera
* *
******************************************************************************/
-static void g_intro_generator_print(GIntroGenerator *generator, GBufferLine *line, size_t index, size_t repeat)
+static void g_intro_generator_print(GIntroGenerator *generator, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content)
{
assert(repeat < generator->count);
diff --git a/src/glibext/generators/rborder.c b/src/glibext/generators/rborder.c
index 9a257bb..c1fc88c 100644
--- a/src/glibext/generators/rborder.c
+++ b/src/glibext/generators/rborder.c
@@ -90,7 +90,7 @@ static int g_border_generator_contains_addr(const GBorderGenerator *, const vmpa
static BufferLineFlags g_border_generator_get_flags(const GBorderGenerator *, size_t, size_t);
/* Imprime dans une ligne de rendu le contenu représenté. */
-static void g_border_generator_print(GBorderGenerator *, GBufferLine *, size_t, size_t);
+static void g_border_generator_print(GBorderGenerator *, GBufferLine *, size_t, size_t, const GBinContent *);
@@ -329,6 +329,7 @@ static BufferLineFlags g_border_generator_get_flags(const GBorderGenerator *gene
* line = ligne de rendu à compléter. *
* index = indice de cette même ligne dans le tampon global.*
* repeat = indice d'utilisations successives du générateur. *
+* content = éventuel contenu binaire brut à imprimer. *
* *
* Description : Imprime dans une ligne de rendu le contenu représenté. *
* *
@@ -338,7 +339,7 @@ static BufferLineFlags g_border_generator_get_flags(const GBorderGenerator *gene
* *
******************************************************************************/
-static void g_border_generator_print(GBorderGenerator *generator, GBufferLine *line, size_t index, size_t repeat)
+static void g_border_generator_print(GBorderGenerator *generator, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content)
{
char *text; /* Texte principal à insérer */
diff --git a/src/glibext/linegen-int.h b/src/glibext/linegen-int.h
index e84b6fd..c5483f4 100644
--- a/src/glibext/linegen-int.h
+++ b/src/glibext/linegen-int.h
@@ -42,7 +42,7 @@ typedef int (* linegen_contains_fc) (const GLineGenerator *, const vmpa2t *, siz
typedef BufferLineFlags (* linegen_get_flags_fc) (const GLineGenerator *, size_t, size_t);
/* Imprime dans une ligne de rendu le contenu représenté. */
-typedef void (* linegen_print_fc) (GLineGenerator *, GBufferLine *, size_t, size_t);
+typedef void (* linegen_print_fc) (GLineGenerator *, GBufferLine *, size_t, size_t, const GBinContent *);
/* Intermédiaire pour la génération de lignes (interface) */
diff --git a/src/glibext/linegen.c b/src/glibext/linegen.c
index 1bc5583..52f7269 100644
--- a/src/glibext/linegen.c
+++ b/src/glibext/linegen.c
@@ -183,6 +183,7 @@ BufferLineFlags g_line_generator_get_flags(const GLineGenerator *generator, size
* line = ligne de rendu à compléter. *
* index = indice de cette même ligne dans le tampon global.*
* repeat = indice d'utilisations successives du générateur. *
+* content = éventuel contenu binaire brut à imprimer. *
* *
* Description : Imprime dans une ligne de rendu le contenu représenté. *
* *
@@ -192,7 +193,7 @@ BufferLineFlags g_line_generator_get_flags(const GLineGenerator *generator, size
* *
******************************************************************************/
-void g_line_generator_print(GLineGenerator *generator, GBufferLine *line, size_t index, size_t repeat)
+void g_line_generator_print(GLineGenerator *generator, GBufferLine *line, size_t index, size_t repeat, const GBinContent *content)
{
GLineGeneratorIface *iface; /* Interface utilisée */
@@ -203,6 +204,6 @@ void g_line_generator_print(GLineGenerator *generator, GBufferLine *line, size_t
assert(repeat < g_line_generator_count_lines(generator));
#endif
- return iface->print(generator, line, index, repeat);
+ return iface->print(generator, line, index, repeat, content);
}
diff --git a/src/glibext/linegen.h b/src/glibext/linegen.h
index 56ca945..2045cb8 100644
--- a/src/glibext/linegen.h
+++ b/src/glibext/linegen.h
@@ -27,6 +27,7 @@
#include "gbufferline.h"
+#include "../analysis/content.h"
@@ -61,7 +62,7 @@ int g_line_generator_contains_addr(const GLineGenerator *, const vmpa2t *, size_
BufferLineFlags g_line_generator_get_flags(const GLineGenerator *, size_t, size_t);
/* Imprime dans une ligne de rendu le contenu représenté. */
-void g_line_generator_print(GLineGenerator *, GBufferLine *, size_t, size_t);
+void g_line_generator_print(GLineGenerator *, GBufferLine *, size_t, size_t, const GBinContent *);