summaryrefslogtreecommitdiff
path: root/python/__init__.py
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 /python/__init__.py
parentb2faff7bd9112a878b5fca33048fdbab2fb52045 (diff)
Add notifications for data variables
Diffstat (limited to 'python/__init__.py')
-rw-r--r--python/__init__.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/python/__init__.py b/python/__init__.py
index 0d9c15a2..7564ee98 100644
--- a/python/__init__.py
+++ b/python/__init__.py
@@ -387,6 +387,15 @@ class BinaryDataNotification:
def function_updated(self, view, func):
pass
+ def data_var_added(self, view, var):
+ pass
+
+ def data_var_removed(self, view, var):
+ pass
+
+ def data_var_updated(self, view, var):
+ pass
+
def string_found(self, view, string_type, offset, length):
pass
@@ -483,6 +492,9 @@ class BinaryDataNotificationCallbacks:
self._cb.functionAdded = self._cb.functionAdded.__class__(self._function_added)
self._cb.functionRemoved = self._cb.functionRemoved.__class__(self._function_removed)
self._cb.functionUpdated = self._cb.functionUpdated.__class__(self._function_updated)
+ self._cb.dataVariableAdded = self._cb.dataVariableAdded.__class__(self._data_var_added)
+ self._cb.dataVariableRemoved = self._cb.dataVariableRemoved.__class__(self._data_var_removed)
+ self._cb.dataVariableUpdated = self._cb.dataVariableUpdated.__class__(self._data_var_updated)
self._cb.stringFound = self._cb.stringFound.__class__(self._string_found)
self._cb.stringRemoved = self._cb.stringRemoved.__class__(self._string_removed)
@@ -528,6 +540,33 @@ class BinaryDataNotificationCallbacks:
except:
log_error(traceback.format_exc())
+ def _data_var_added(self, ctxt, view, var):
+ try:
+ address = var.address
+ var_type = Type(core.BNNewTypeReference(var.type))
+ auto_discovered = var.autoDiscovered
+ self.notify.data_var_added(self.view, DataVariable(address, var_type, auto_discovered))
+ except:
+ log_error(traceback.format_exc())
+
+ def _data_var_removed(self, ctxt, view, var):
+ try:
+ address = var.address
+ var_type = Type(core.BNNewTypeReference(var.type))
+ auto_discovered = var.autoDiscovered
+ self.notify.data_var_removed(self.view, DataVariable(address, var_type, auto_discovered))
+ except:
+ log_error(traceback.format_exc())
+
+ def _data_var_updated(self, ctxt, view, var):
+ try:
+ address = var.address
+ var_type = Type(core.BNNewTypeReference(var.type))
+ auto_discovered = var.autoDiscovered
+ self.notify.data_var_updated(self.view, DataVariable(address, var_type, auto_discovered))
+ except:
+ log_error(traceback.format_exc())
+
def _string_found(self, ctxt, view, string_type, offset, length):
try:
self.notify.string_found(self.view, core.BNStringType_names[string_type], offset, length)