diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-12-07 20:33:21 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-12-07 20:33:21 (GMT) |
commit | c0af4cc392a246b05d41b7b7c05bbcd8b0cfb39e (patch) | |
tree | 0d645c71c40fc4b625271d0ab1ef8e7ebab04075 /src | |
parent | a13d12c758184449bf3305785ef33273802a761c (diff) |
Relied on GObject introspection and dynamic gtypes to inherit in Python.
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/processor.c | 49 | ||||
-rw-r--r-- | src/arch/processor.h | 6 |
2 files changed, 39 insertions, 16 deletions
diff --git a/src/arch/processor.c b/src/arch/processor.c index 4450208..4d7bacc 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -69,6 +69,8 @@ static void g_arch_processor_dispose(GArchProcessor *); /* Procède à la libération totale de la mémoire. */ static void g_arch_processor_finalize(GArchProcessor *); +/* Fournit un contexte générique pour l'exécution du processeur. */ +static GProcContext *_g_arch_processor_get_context(const GArchProcessor *); @@ -125,6 +127,8 @@ static void g_arch_processor_class_init(GArchProcessorClass *klass) object->dispose = (GObjectFinalizeFunc/* ! */)g_arch_processor_dispose; object->finalize = (GObjectFinalizeFunc)g_arch_processor_finalize; + klass->get_ctx = _g_arch_processor_get_context; + g_signal_new("changed", G_TYPE_ARCH_PROCESSOR, G_SIGNAL_RUN_LAST, @@ -225,28 +229,21 @@ static void g_arch_processor_finalize(GArchProcessor *proc) /****************************************************************************** * * -* Paramètres : proc = architecture visée par la procédure. * +* Paramètres : proc = architecture, spectatrice ici. * * * -* Description : Fournit un contexte propre au processeur d'une architecture. * +* Description : Fournit un contexte générique pour l'exécution du processeur.* * * -* Retour : Nouveau contexte mis à disposition. * +* Retour : Contexte mis en place. * * * * Remarques : - * * * ******************************************************************************/ -GProcContext *g_arch_processor_get_context(const GArchProcessor *proc) +static GProcContext *_g_arch_processor_get_context(const GArchProcessor *proc) { - GProcContext *result; /* Contexte à retourner */ - GArchProcessorClass *class; /* Classe de l'instance active */ + GProcContext *result; /* Instance à retourner */ - class = G_ARCH_PROCESSOR_GET_CLASS(proc); - - if (class->get_ctx != NULL) - result = class->get_ctx(proc); - - else - result = NULL; + result = g_object_new(G_TYPE_PROC_CONTEXT, NULL); return result; @@ -331,6 +328,32 @@ bool g_arch_processor_has_virtual_space(const GArchProcessor *proc) /****************************************************************************** * * +* Paramètres : proc = architecture visée par la procédure. * +* * +* Description : Fournit un contexte propre au processeur d'une architecture. * +* * +* Retour : Nouveau contexte mis à disposition. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GProcContext *g_arch_processor_get_context(const GArchProcessor *proc) +{ + GProcContext *result; /* Contexte à retourner */ + GArchProcessorClass *class; /* Classe de l'instance active */ + + class = G_ARCH_PROCESSOR_GET_CLASS(proc); + + result = class->get_ctx(proc); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : proc = architecture visée par la procédure. * * ctx = contexte lié à l'exécution du processeur. * * content = flux de données à analyser. * diff --git a/src/arch/processor.h b/src/arch/processor.h index 24d9287..26eddb1 100644 --- a/src/arch/processor.h +++ b/src/arch/processor.h @@ -55,9 +55,6 @@ typedef struct _GArchProcessorClass GArchProcessorClass; /* Indique le type défini pour un processeur d'architecture. */ GType g_arch_processor_get_type(void); -/* Fournit un contexte propre au processeur d'une architecture. */ -GProcContext *g_arch_processor_get_context(const GArchProcessor *); - /* Fournit le boustime du processeur d'une architecture. */ SourceEndian g_arch_processor_get_endianness(const GArchProcessor *); @@ -70,6 +67,9 @@ MemoryDataSize g_arch_processor_get_instruction_min_size(const GArchProcessor *) /* Indique si l'architecture possède un espace virtuel ou non. */ bool g_arch_processor_has_virtual_space(const GArchProcessor *); +/* Fournit un contexte propre au processeur d'une architecture. */ +GProcContext *g_arch_processor_get_context(const GArchProcessor *); + /* Désassemble une instruction dans un flux de données. */ GArchInstruction *g_arch_processor_disassemble(const GArchProcessor *, GProcContext *, const GBinContent *, vmpa2t *, GExeFormat *); |