summaryrefslogtreecommitdiff
path: root/src/decomp/instruction.h
diff options
context:
space:
mode:
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 *);