summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2022-08-16 20:49:02 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2022-09-01 23:13:43 -0400
commit40bdfac7b71dd1cbe9223b82518053f80268e2a8 (patch)
treee53fc5710bb6e6844c1f09e967b715db0aac4444 /function.cpp
parent2f6ebaa0042f6a02b9fcbf49b742fc25887bfdb4 (diff)
Splitting of variables
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/function.cpp b/function.cpp
index 06815c39..96795ef0 100644
--- a/function.cpp
+++ b/function.cpp
@@ -2611,6 +2611,38 @@ void Function::UnmergeVariables(const Variable& target, const std::set<Variable>
}
+std::set<Variable> Function::GetSplitVariables()
+{
+ size_t count = 0;
+ BNVariable* vars = BNGetSplitVariables(m_object, &count);
+
+ std::set<Variable> result;
+ for (size_t i = 0; i < count; i++)
+ {
+ Variable var;
+ var.type = vars[i].type;
+ var.index = vars[i].index;
+ var.storage = vars[i].storage;
+ result.insert(var);
+ }
+
+ BNFreeVariableList(vars);
+ return result;
+}
+
+
+void Function::SplitVariable(const Variable& var)
+{
+ BNSplitVariable(m_object, &var);
+}
+
+
+void Function::UnsplitVariable(const Variable& var)
+{
+ BNUnsplitVariable(m_object, &var);
+}
+
+
vector<ILReferenceSource> Function::GetMediumLevelILVariableReferences(const Variable& var)
{
size_t count;