summaryrefslogtreecommitdiff
path: root/src/glibext/portion.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2024-11-23 15:59:19 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2024-11-23 15:59:19 (GMT)
commit411f03130cf45194689bc344f19a3b77c33a31ae (patch)
treef047b62015eb37e30629398f9adcb977a5a6c6f6 /src/glibext/portion.h
parent80d779749adf228078b61f268bf952ba91a277f0 (diff)
Restore more features for formats.
Diffstat (limited to 'src/glibext/portion.h')
-rw-r--r--src/glibext/portion.h141
1 files changed, 34 insertions, 107 deletions
diff --git a/src/glibext/portion.h b/src/glibext/portion.h
index ea4b4aa..88d69b6 100644
--- a/src/glibext/portion.h
+++ b/src/glibext/portion.h
@@ -1,8 +1,8 @@
/* Chrysalide - Outil d'analyse de fichiers binaires
- * binportion.h - prototypes pour la représentation graphique de portions de binaire
+ * portion.h - prototypes pour la représentation graphique de portions de binaire
*
- * Copyright (C) 2013-2019 Cyrille Bagard
+ * Copyright (C) 2013-2024 Cyrille Bagard
*
* This file is part of Chrysalide.
*
@@ -21,120 +21,70 @@
*/
-#ifndef _GLIBEXT_BINPORTION_H
-#define _GLIBEXT_BINPORTION_H
+#ifndef _GLIBEXT_PORTION_H
+#define _GLIBEXT_PORTION_H
-#include <glib-object.h>
#include <stdbool.h>
-#ifdef INCLUDE_GTK_SUPPORT
-# include <gtk/gtk.h>
-#endif
+#include "helpers.h"
#include "../arch/vmpa.h"
-#include "../common/fnv1a.h"
/* ------------------------------- PORTION DE BINAIRE ------------------------------- */
-/**
- * Couleurs de représentation.
- */
-
-#define BPC_RAW "binportion-raw"
-#define BPC_CODE "binportion-code"
-#define BPC_DATA "binportion-data"
-#define BPC_DATA_RO "binportion-data-ro"
-#define BPC_DISASS_ERROR "binportion-disassembly-error"
-
-
-#define G_TYPE_BIN_PORTION (g_binary_portion_get_type())
-#define G_BIN_PORTION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_BIN_PORTION, GBinPortion))
-#define G_IS_BIN_PORTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_BIN_PORTION))
-#define G_BIN_PORTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_BIN_PORTION, GBinPortionClass))
-#define G_IS_BIN_PORTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_BIN_PORTION))
-#define G_BIN_PORTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_BIN_PORTION, GBinPortionClass))
-
-
-/* Portion de données binaires quelconques (instance) */
-typedef struct _GBinPortion GBinPortion;
-
-/* Portion de données binaires quelconques (classe) */
-typedef struct _GBinPortionClass GBinPortionClass;
-
-
-/* Droits d'accès à une portion */
-typedef enum _PortionAccessRights
-{
- PAC_NONE = (0 << 0), /* Aucun */
- PAC_READ = (1 << 0), /* Lecture */
- PAC_WRITE = (1 << 1), /* Ecriture */
- PAC_EXEC = (1 << 2) /* Exécution */
-
-} PortionAccessRights;
+#define G_TYPE_BINARY_PORTION (g_binary_portion_get_type())
+DECLARE_GTYPE(GBinaryPortion, g_binary_portion, G, BINARY_PORTION);
-#define PAC_ALL ((PortionAccessRights)(PAC_READ | PAC_WRITE | PAC_EXEC))
-
-
-/* Indique le type défini par la GLib pour les portions de données binaires. */
-GType g_binary_portion_get_type(void);
/* Crée une description de partie de code vierge. */
-GBinPortion *g_binary_portion_new(const char *, const vmpa2t *, phys_t);
+GBinaryPortion *g_binary_portion_new(const vmpa2t *, phys_t);
/* Etablit la comparaison ascendante entre deux portions. */
-int g_binary_portion_compare(const GBinPortion **, const GBinPortion **);
-
-#ifdef INCLUDE_GTK_SUPPORT
-
-/* Attribue à la portion une éventuelle image de représentation. */
-void g_binary_portion_set_icon(GBinPortion *, cairo_surface_t *);
-
-/* Fournit une éventuelle image de représentation de portion. */
-cairo_surface_t *g_binary_portion_get_icon(const GBinPortion *);
-
-#endif
+int g_binary_portion_compare(const GBinaryPortion **, const GBinaryPortion **);
/* Attribue une description humaine à une partie de code. */
-void g_binary_portion_set_desc(GBinPortion *, const char *);
+void g_binary_portion_set_desc(GBinaryPortion *, const char *);
/* Fournit la description attribuée à une partie de code. */
-const char *g_binary_portion_get_desc(const GBinPortion *);
+const char *g_binary_portion_get_desc(const GBinaryPortion *);
/* Fournit l'emplacement d'une partie de code binaire. */
-const mrange_t *g_binary_portion_get_range(const GBinPortion *);
+const mrange_t *g_binary_portion_get_range(const GBinaryPortion *);
/* Assure qu'une portion ne dépasse pas une position donnée. */
-bool g_binary_portion_limit_range(GBinPortion *, phys_t);
+bool g_binary_portion_limit_range(GBinaryPortion *, phys_t);
/* Définit la nature de la portion en terme d'originalité. */
-void g_binary_portion_mark_as_continued(GBinPortion *, bool);
+void g_binary_portion_mark_as_continued(GBinaryPortion *, bool);
/* Indique la nature de la portion en terme d'originalité. */
-bool g_binary_portion_is_continuation(const GBinPortion *);
-
-/* Définit les droits associés à une partie de code. */
-void g_binary_portion_set_rights(GBinPortion *, PortionAccessRights);
+bool g_binary_portion_is_continuation(const GBinaryPortion *);
-/* Fournit les droits associés à une partie de code. */
-PortionAccessRights g_binary_portion_get_rights(const GBinPortion *);
+/* Droits d'accès à une portion */
+typedef enum _PortionAccessRights
+{
+ PAC_NONE = (0 << 0), /* Aucun */
+ PAC_READ = (1 << 0), /* Lecture */
+ PAC_WRITE = (1 << 1), /* Ecriture */
+ PAC_EXEC = (1 << 2) /* Exécution */
-#ifdef INCLUDE_GTK_SUPPORT
+} PortionAccessRights;
-/* Prépare une astuce concernant une portion pour son affichage. */
-void g_binary_portion_query_tooltip(GBinPortion *, GtkTooltip *);
+#define PAC_ALL ((PortionAccessRights)(PAC_READ | PAC_WRITE | PAC_EXEC))
-/* Représente la portion sur une bande dédiée. */
-void g_binary_portion_draw(const GBinPortion *, GtkStyleContext *, cairo_t *, const GdkRectangle *);
+/* Définit les droits associés à une partie de code. */
+void g_binary_portion_set_rights(GBinaryPortion *, PortionAccessRights);
-#endif
+/* Fournit les droits associés à une partie de code. */
+PortionAccessRights g_binary_portion_get_rights(const GBinaryPortion *);
/* Procède à l'inclusion d'une portion dans une autre. */
-void g_binary_portion_include(GBinPortion *, GBinPortion *);
+bool g_binary_portion_include(GBinaryPortion *, GBinaryPortion *);
/* Sens des visites */
typedef enum _BinaryPortionVisit
@@ -147,47 +97,24 @@ typedef enum _BinaryPortionVisit
/* Fonction appelée à chaque visite de portion.*/
-typedef bool (* visit_portion_fc) (GBinPortion *, GBinPortion *, BinaryPortionVisit, void *);
+typedef bool (* visit_portion_fc) (GBinaryPortion *, GBinaryPortion *, BinaryPortionVisit, void *);
/* Parcourt un ensemble de portions binaires. */
-bool g_binary_portion_visit(GBinPortion *, visit_portion_fc, void *);
+bool g_binary_portion_visit(GBinaryPortion *, visit_portion_fc, void *);
/* ------------------------ PARCOURS D'ENSEMBLES DE PORTIONS ------------------------ */
-#ifdef INCLUDE_GTK_SUPPORT
-
-/* Compte le nombre de portions présentes dans une arborescence. */
-size_t g_binary_portion_count(const GBinPortion *);
-
-/* Recherche la portion présente à un point donné. */
-GBinPortion *g_binary_portion_find_at_pos(GBinPortion *, gint, GdkRectangle *);
-
-#endif
-
/* Recherche la portion présente à une adresse donnée. */
-GBinPortion *g_binary_portion_find_at_addr(GBinPortion *, const vmpa2t *);
-
-#ifdef INCLUDE_GTK_SUPPORT
-
-/* Fournit la position correspondant à une adresse donnée. */
-bool get_binary_portion_addr_from_pos(GBinPortion *, gint, const GdkRectangle *, vmpa2t *);
-
-/* Fournit l'adresse correspondant à une position donnée. */
-bool get_binary_portion_pos_from_addr(GBinPortion *, const vmpa2t *, const GdkRectangle *, gint *);
-
-/* Prépare une astuce concernant une portion pour son affichage. */
-gboolean query_tooltip_for_binary_portion(GBinPortion *, gint, gint, const GdkRectangle *, GtkTooltip *);
-
-#endif
+GBinaryPortion *g_binary_portion_find_at_addr(GBinaryPortion *, const vmpa2t *);
/* Fournit l'emplacement correspondant à une position physique. */
-bool g_binary_portion_translate_offset_into_vmpa(const GBinPortion *, phys_t, vmpa2t *);
+bool g_binary_portion_translate_offset_into_vmpa(const GBinaryPortion *, phys_t, vmpa2t *);
/* Fournit l'emplacement correspondant à une adresse virtuelle. */
-bool g_binary_portion_translate_address_into_vmpa(const GBinPortion *, virt_t, vmpa2t *);
+bool g_binary_portion_translate_address_into_vmpa(const GBinaryPortion *, virt_t, vmpa2t *);