summaryrefslogtreecommitdiff
path: root/src/analysis/block.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/block.h')
-rw-r--r--src/analysis/block.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/analysis/block.h b/src/analysis/block.h
index 9e136a3..a85e4aa 100644
--- a/src/analysis/block.h
+++ b/src/analysis/block.h
@@ -79,9 +79,25 @@ typedef struct _GInstrBlock GInstrBlock;
typedef struct _GInstrBlockClass GInstrBlockClass;
+/* Position au cours d'une visite */
+typedef enum _BlockVisitOrder
+{
+ BVO_IN, /* Entrée dans un gros bloc */
+ BVO_PENDING, /* Visite d'un bloc simple */
+ BVO_OUT /* Sortie d'un gros bloc */
+
+} BlockVisitOrder;
+
+/* Rappel à chaque bloc visité */
+typedef bool (* instr_block_visitor_cb) (GInstrBlock *, BlockVisitOrder, void *);
+
+
/* Indique le type défini pour un bloc d'instructions. */
GType g_instr_block_get_type(void);
+/* Parcours tous les blocs d'instructions dans un ordre donné. */
+bool g_instr_block_visit(GInstrBlock *, instr_block_visitor_cb, void *);
+
/* Etablit la liste de tous les blocs présents. */
void g_instr_block_list_all_blocks(const GInstrBlock *, GInstrBlock ***, size_t *);