summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-07-20 01:24:51 -0400
committerRusty Wagner <rusty@vector35.com>2016-07-20 01:24:51 -0400
commit5fe41897d085a4fe39135fdcc7ec60a24d1799cd (patch)
treeccf956741eb73d616ba7ff48a10dd01e7fcdc6e8 /binaryview.cpp
parentb2faff7bd9112a878b5fca33048fdbab2fb52045 (diff)
Add notifications for data variables
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 6d96c8ea..6c84a69b 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -75,6 +75,42 @@ void BinaryDataNotification::FunctionUpdatedCallback(void* ctxt, BNBinaryView* o
}
+void BinaryDataNotification::DataVariableAddedCallback(void* ctxt, BNBinaryView* object, BNDataVariable* var)
+{
+ BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
+ DataVariable varObj;
+ varObj.address = var->address;
+ varObj.type = new Type(BNNewTypeReference(var->type));
+ varObj.autoDiscovered = var->autoDiscovered;
+ notify->OnDataVariableAdded(view, varObj);
+}
+
+
+void BinaryDataNotification::DataVariableRemovedCallback(void* ctxt, BNBinaryView* object, BNDataVariable* var)
+{
+ BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
+ DataVariable varObj;
+ varObj.address = var->address;
+ varObj.type = new Type(BNNewTypeReference(var->type));
+ varObj.autoDiscovered = var->autoDiscovered;
+ notify->OnDataVariableRemoved(view, varObj);
+}
+
+
+void BinaryDataNotification::DataVariableUpdatedCallback(void* ctxt, BNBinaryView* object, BNDataVariable* var)
+{
+ BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
+ DataVariable varObj;
+ varObj.address = var->address;
+ varObj.type = new Type(BNNewTypeReference(var->type));
+ varObj.autoDiscovered = var->autoDiscovered;
+ notify->OnDataVariableUpdated(view, varObj);
+}
+
+
void BinaryDataNotification::StringFoundCallback(void* ctxt, BNBinaryView* object, BNStringType type, uint64_t offset, size_t len)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
@@ -100,6 +136,9 @@ BinaryDataNotification::BinaryDataNotification()
m_callbacks.functionAdded = FunctionAddedCallback;
m_callbacks.functionRemoved = FunctionRemovedCallback;
m_callbacks.functionUpdated = FunctionUpdatedCallback;
+ m_callbacks.dataVariableAdded = DataVariableAddedCallback;
+ m_callbacks.dataVariableRemoved = DataVariableRemovedCallback;
+ m_callbacks.dataVariableUpdated = DataVariableUpdatedCallback;
m_callbacks.stringFound = StringFoundCallback;
m_callbacks.stringRemoved = StringRemovedCallback;
}