summaryrefslogtreecommitdiff
path: root/src/decomp/instruction.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2013-01-27 00:43:59 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2013-01-27 00:43:59 (GMT)
commit7f35f8d2f211fdf087252ede7665e9c81f35cdc7 (patch)
treed1c88366bc73e51db38ef982897e95950405bf52 /src/decomp/instruction.h
parent2050b07c42c15738662dd9b3c5841694b64ab2a3 (diff)
Implemented the first steps for visiting or replacing items in decompiled instructions.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@331 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/decomp/instruction.h')
-rw-r--r--src/decomp/instruction.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/decomp/instruction.h b/src/decomp/instruction.h
index 810be79..ed8090d 100644
--- a/src/decomp/instruction.h
+++ b/src/decomp/instruction.h
@@ -47,16 +47,26 @@ typedef struct _GDecInstruction GDecInstruction;
/* Définition d'une instruction décompilée (classe) */
typedef struct _GDecInstructionClass GDecInstructionClass;
+/* Position au cours d'une visite */
+typedef enum _DecInstrVisitFlags
+{
+ DVF_ENTER, /* Entrée dans une instruction */
+ DVF_EXIT /* Sortie d'une instruction */
-/* Visite un ensemble hiérarchique d'instructions décompilées. */
-typedef void (* process_decomp_fc) (GDecInstruction *, void *);
+} DecInstrVisitFlags;
+
+/* Rappel à chaque instruction décompilée visitée */
+typedef bool (* dec_instr_visitor_cb) (GDecInstruction *, DecInstrVisitFlags, void *);
/* Indique le type défini pour une instruction décompilée. */
GType g_dec_instruction_get_type(void);
/* Visite un ensemble hiérarchique d'instructions décompilées. */
-void g_dec_instruction_visit(GDecInstruction *, process_decomp_fc, void *, bool);
+bool g_dec_instruction_visit(GDecInstruction *, dec_instr_visitor_cb, DecInstrVisitFlags, void *);
+
+/* Remplace une instruction décompilée par une autre. */
+bool g_dec_instruction_replace(GDecInstruction *, GDecInstruction *, GDecInstruction *);
/* Imprime pour l'écran un version humaine d'une expression. */
GBufferLine *g_dec_instruction_print(const GDecInstruction *, GCodeBuffer *, GBufferLine *, GLangOutput *);