From 584e4d244a9124f6ec403162994434ff085e9c5d Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 19 Feb 2015 01:32:45 -0500 Subject: Add APIs for accessing function information --- basicblock.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 basicblock.cpp (limited to 'basicblock.cpp') diff --git a/basicblock.cpp b/basicblock.cpp new file mode 100644 index 00000000..6fc72992 --- /dev/null +++ b/basicblock.cpp @@ -0,0 +1,72 @@ +#include "binaryninjaapi.h" + +using namespace BinaryNinja; +using namespace std; + + +BasicBlock::BasicBlock(BNBasicBlock* block): m_block(block) +{ +} + + +BasicBlock::~BasicBlock() +{ + BNFreeBasicBlock(m_block); +} + + +Ref BasicBlock::GetFunction() const +{ + return new Function(BNGetBasicBlockFunction(m_block)); +} + + +Ref BasicBlock::GetArchitecture() const +{ + return new CoreArchitecture(BNGetBasicBlockArchitecture(m_block)); +} + + +uint64_t BasicBlock::GetStart() const +{ + return BNGetBasicBlockStart(m_block); +} + + +uint64_t BasicBlock::GetEnd() const +{ + return BNGetBasicBlockEnd(m_block); +} + + +uint64_t BasicBlock::GetLength() const +{ + return BNGetBasicBlockLength(m_block); +} + + +vector BasicBlock::GetInstructionSizes() const +{ + size_t count; + uint8_t* array = BNGetBasicBlockInstructionSizes(m_block, &count); + + vector result; + result.insert(result.end(), &array[0], &array[count]); + + BNFreeBasicBlockInstructionSizeList(array); + return result; +} + + +vector BasicBlock::GetOutgoingEdges() const +{ + size_t count; + BNBasicBlockEdge* array = BNGetBasicBlockOutgoingEdges(m_block, &count); + + vector result; + for (size_t i = 0; i < count; i++) + result.push_back(array[i]); + + BNFreeBasicBlockOutgoingEdgeList(array); + return result; +} -- cgit v1.3.1