From cef6e55ba5aa55bfd2e168df7ac0e477e8dceffc Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 17 May 2016 23:12:18 -0400 Subject: IL basic blocks are now in the IL function class --- lowlevelil.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'lowlevelil.cpp') 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> LowLevelILFunction::GetBasicBlocks() const +{ + size_t count; + BNBasicBlock** blocks = BNGetLowLevelILBasicBlockList(m_object, &count); + + vector> result; + for (size_t i = 0; i < count; i++) + result.push_back(new BasicBlock(BNNewBasicBlockReference(blocks[i]))); + + BNFreeBasicBlockList(blocks, count); + return result; +} -- cgit v1.3.1