summaryrefslogtreecommitdiff
path: root/src/analysis/block.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2013-01-10 22:47:37 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2013-01-10 22:47:37 (GMT)
commit221bcaeeb06415d501f9abbb9bc4b7d8339af1fe (patch)
tree243a1709589d3733d6525b0a143ecf0c539caae7 /src/analysis/block.c
parentc455057e634b30c3214a49db009bad5fd0c631ff (diff)
Simplified the decompilation process by using links between basic blocks.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@322 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/analysis/block.c')
-rw-r--r--src/analysis/block.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/analysis/block.c b/src/analysis/block.c
index 62b56ab..1ec9804 100644
--- a/src/analysis/block.c
+++ b/src/analysis/block.c
@@ -131,6 +131,9 @@ static void g_instr_block_init(GInstrBlock *block)
static void g_instr_block_dispose(GInstrBlock *block)
{
+ if (block->links_block != NULL)
+ g_object_unref(G_OBJECT(block->links_block));
+
G_OBJECT_CLASS(g_instr_block_parent_class)->dispose(G_OBJECT(block));
}
@@ -215,3 +218,46 @@ void g_instr_block_list_all_blocks(const GInstrBlock *block, GInstrBlock ***list
block->list_blocks(block, list, count);
}
+
+
+/******************************************************************************
+* *
+* Paramètres : block = bloc d'instructions à mettre à jour. *
+* links = bloc contenant les blocs liés au bloc. *
+* *
+* Description : Définit l'ensemble contenant les blocs liés. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void g_instr_block_set_links_block(GInstrBlock *block, GInstrBlock *links)
+{
+ if (block->links_block != NULL)
+ g_object_unref(G_OBJECT(block->links_block));
+
+ g_object_ref(G_OBJECT(links));
+ block->links_block = links;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : block = bloc d'instructions à mettre à jour. *
+* *
+* Description : Fournit l'ensemble contenant les blocs liés. *
+* *
+* Retour : Bloc contenant les blocs liés au bloc. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GInstrBlock *g_instr_block_get_links_block(const GInstrBlock *block)
+{
+ return block->links_block;
+
+}