summaryrefslogtreecommitdiff
path: root/lowlevelil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lowlevelil.cpp')
-rw-r--r--lowlevelil.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/lowlevelil.cpp b/lowlevelil.cpp
index 385c55c5..d86bb523 100644
--- a/lowlevelil.cpp
+++ b/lowlevelil.cpp
@@ -30,9 +30,9 @@ LowLevelILLabel::LowLevelILLabel()
}
-LowLevelILFunction::LowLevelILFunction()
+LowLevelILFunction::LowLevelILFunction(Architecture* arch)
{
- m_object = BNCreateLowLevelILFunction();
+ m_object = BNCreateLowLevelILFunction(arch->GetObject());
}
@@ -553,9 +553,9 @@ BNLowLevelILLabel* LowLevelILFunction::GetLabelForAddress(Architecture* arch, Ex
}
-void LowLevelILFunction::Finalize()
+void LowLevelILFunction::Finalize(Function* func)
{
- BNFinalizeLowLevelILFunction(m_object);
+ BNFinalizeLowLevelILFunction(m_object, func ? func->GetObject() : nullptr);
}
@@ -615,3 +615,17 @@ uint32_t LowLevelILFunction::GetTemporaryFlagCount()
{
return BNGetLowLevelILTemporaryFlagCount(m_object);
}
+
+
+vector<Ref<BasicBlock>> LowLevelILFunction::GetBasicBlocks() const
+{
+ size_t count;
+ BNBasicBlock** blocks = BNGetLowLevelILBasicBlockList(m_object, &count);
+
+ vector<Ref<BasicBlock>> result;
+ for (size_t i = 0; i < count; i++)
+ result.push_back(new BasicBlock(BNNewBasicBlockReference(blocks[i])));
+
+ BNFreeBasicBlockList(blocks, count);
+ return result;
+}