summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2016-09-16 00:58:12 -0400
committerJordan Wiens <jordan@psifertex.com>2016-09-16 00:58:12 -0400
commitc334d84ff86c2bc3ce0298bdec79d5c6f5aa8b63 (patch)
tree533b57384862655b8a0cbbfcbd8d0678147aa97f /function.cpp
parent978acef68bd6b023041f669e23e9faf8802760a7 (diff)
parent124cf1bc4f465a915621b7ac81af94b9a69a937a (diff)
Merge branch 'dev' of github.com:Vector35/binaryninja-api into dev
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/function.cpp b/function.cpp
index de12918f..109b6f49 100644
--- a/function.cpp
+++ b/function.cpp
@@ -100,6 +100,15 @@ vector<Ref<BasicBlock>> Function::GetBasicBlocks() const
}
+Ref<BasicBlock> Function::GetBasicBlockAtAddress(Architecture* arch, uint64_t addr) const
+{
+ BNBasicBlock* block = BNGetFunctionBasicBlockAtAddress(m_object, arch->GetObject(), addr);
+ if (!block)
+ return nullptr;
+ return new BasicBlock(block);
+}
+
+
void Function::MarkRecentUse()
{
BNMarkFunctionAsRecentlyUsed(m_object);
@@ -582,6 +591,120 @@ void Function::SetIntegerConstantDisplayType(Architecture* arch, uint64_t instrA
}
+BNHighlightColor Function::GetInstructionHighlight(Architecture* arch, uint64_t addr)
+{
+ return BNGetInstructionHighlight(m_object, arch->GetObject(), addr);
+}
+
+
+void Function::SetAutoInstructionHighlight(Architecture* arch, uint64_t addr, BNHighlightColor color)
+{
+ BNSetAutoInstructionHighlight(m_object, arch->GetObject(), addr, color);
+}
+
+
+void Function::SetAutoInstructionHighlight(Architecture* arch, uint64_t addr, BNHighlightStandardColor color,
+ uint8_t alpha)
+{
+ BNHighlightColor hc;
+ hc.style = StandardHighlightColor;
+ hc.color = color;
+ hc.mixColor = NoHighlightColor;
+ hc.mix = 0;
+ hc.r = 0;
+ hc.g = 0;
+ hc.b = 0;
+ hc.alpha = alpha;
+ SetAutoInstructionHighlight(arch, addr, hc);
+}
+
+
+void Function::SetAutoInstructionHighlight(Architecture* arch, uint64_t addr, BNHighlightStandardColor color,
+ BNHighlightStandardColor mixColor, uint8_t mix, uint8_t alpha)
+{
+ BNHighlightColor hc;
+ hc.style = MixedHighlightColor;
+ hc.color = color;
+ hc.mixColor = mixColor;
+ hc.mix = mix;
+ hc.r = 0;
+ hc.g = 0;
+ hc.b = 0;
+ hc.alpha = alpha;
+ SetAutoInstructionHighlight(arch, addr, hc);
+}
+
+
+void Function::SetAutoInstructionHighlight(Architecture* arch, uint64_t addr, uint8_t r, uint8_t g, uint8_t b,
+ uint8_t alpha)
+{
+ BNHighlightColor hc;
+ hc.style = CustomHighlightColor;
+ hc.color = NoHighlightColor;
+ hc.mixColor = NoHighlightColor;
+ hc.mix = 0;
+ hc.r = r;
+ hc.g = g;
+ hc.b = b;
+ hc.alpha = alpha;
+ SetAutoInstructionHighlight(arch, addr, hc);
+}
+
+
+void Function::SetUserInstructionHighlight(Architecture* arch, uint64_t addr, BNHighlightColor color)
+{
+ BNSetUserInstructionHighlight(m_object, arch->GetObject(), addr, color);
+}
+
+
+void Function::SetUserInstructionHighlight(Architecture* arch, uint64_t addr, BNHighlightStandardColor color,
+ uint8_t alpha)
+{
+ BNHighlightColor hc;
+ hc.style = StandardHighlightColor;
+ hc.color = color;
+ hc.mixColor = NoHighlightColor;
+ hc.mix = 0;
+ hc.r = 0;
+ hc.g = 0;
+ hc.b = 0;
+ hc.alpha = alpha;
+ SetUserInstructionHighlight(arch, addr, hc);
+}
+
+
+void Function::SetUserInstructionHighlight(Architecture* arch, uint64_t addr, BNHighlightStandardColor color,
+ BNHighlightStandardColor mixColor, uint8_t mix, uint8_t alpha)
+{
+ BNHighlightColor hc;
+ hc.style = MixedHighlightColor;
+ hc.color = color;
+ hc.mixColor = mixColor;
+ hc.mix = mix;
+ hc.r = 0;
+ hc.g = 0;
+ hc.b = 0;
+ hc.alpha = alpha;
+ SetUserInstructionHighlight(arch, addr, hc);
+}
+
+
+void Function::SetUserInstructionHighlight(Architecture* arch, uint64_t addr, uint8_t r, uint8_t g, uint8_t b,
+ uint8_t alpha)
+{
+ BNHighlightColor hc;
+ hc.style = CustomHighlightColor;
+ hc.color = NoHighlightColor;
+ hc.mixColor = NoHighlightColor;
+ hc.mix = 0;
+ hc.r = r;
+ hc.g = g;
+ hc.b = b;
+ hc.alpha = alpha;
+ SetUserInstructionHighlight(arch, addr, hc);
+}
+
+
void Function::Reanalyze()
{
BNReanalyzeFunction(m_object);