diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2013-01-27 00:43:59 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2013-01-27 00:43:59 (GMT) |
commit | 7f35f8d2f211fdf087252ede7665e9c81f35cdc7 (patch) | |
tree | d1c88366bc73e51db38ef982897e95950405bf52 /src/decomp/instruction.h | |
parent | 2050b07c42c15738662dd9b3c5841694b64ab2a3 (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.h | 16 |
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 *); |