diff options
| author | Rusty Wagner <dontpanic@binaryninja.com> | 2015-03-19 22:57:29 -0400 |
|---|---|---|
| committer | Rusty Wagner <dontpanic@binaryninja.com> | 2015-03-19 22:57:29 -0400 |
| commit | 7726825ec41005363115a69a5c4768d489c5cfec (patch) | |
| tree | b3e44b700b4af853f6b34b05a61158d1d5b16965 | |
| parent | 97cbee81fcda2a812cc655cc6b8cf1e2bead67b9 (diff) | |
Update function list when analysis finds new functions
| -rw-r--r-- | binaryninjaapi.h | 11 | ||||
| -rw-r--r-- | binaryview.cpp | 20 |
2 files changed, 28 insertions, 3 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index ed2d2cec..d7c2c091 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -254,6 +254,7 @@ namespace BinaryNinja }; class BinaryView; + class Function; class BinaryDataNotification { @@ -263,6 +264,8 @@ namespace BinaryNinja static void DataWrittenCallback(void* ctxt, BNBinaryView* data, uint64_t offset, size_t len); static void DataInsertedCallback(void* ctxt, BNBinaryView* data, uint64_t offset, size_t len); static void DataRemovedCallback(void* ctxt, BNBinaryView* data, uint64_t offset, uint64_t len); + static void FunctionAddedCallback(void* ctxt, BNBinaryView* data, BNFunction* func); + static void FunctionRemovedCallback(void* ctxt, BNBinaryView* data, BNFunction* func); public: BinaryDataNotification(); @@ -270,9 +273,11 @@ namespace BinaryNinja BNBinaryDataNotification* GetCallbacks() { return &m_callbacks; } - virtual void OnBinaryDataWritten(BinaryView* view, uint64_t offset, size_t len) = 0; - virtual void OnBinaryDataInserted(BinaryView* view, uint64_t offset, size_t len) = 0; - virtual void OnBinaryDataRemoved(BinaryView* view, uint64_t offset, uint64_t len) = 0; + virtual void OnBinaryDataWritten(BinaryView* view, uint64_t offset, size_t len) { (void)view; (void)offset; (void)len; } + virtual void OnBinaryDataInserted(BinaryView* view, uint64_t offset, size_t len) { (void)view; (void)offset; (void)len; } + virtual void OnBinaryDataRemoved(BinaryView* view, uint64_t offset, uint64_t len) { (void)view; (void)offset; (void)len; } + virtual void OnAnalysisFunctionAdded(BinaryView* view, Function* func) { (void)view; (void)func; } + virtual void OnAnalysisFunctionRemoved(BinaryView* view, Function* func) { (void)view; (void)func; } }; class FileAccessor diff --git a/binaryview.cpp b/binaryview.cpp index e99038f4..2f6e42ef 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -28,12 +28,32 @@ void BinaryDataNotification::DataRemovedCallback(void* ctxt, BNBinaryView* objec } +void BinaryDataNotification::FunctionAddedCallback(void* ctxt, BNBinaryView* object, BNFunction* func) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref<BinaryView> view = new BinaryView(BNNewViewReference(object)); + Ref<Function> funcObj = new Function(BNNewFunctionReference(func)); + notify->OnAnalysisFunctionAdded(view, funcObj); +} + + +void BinaryDataNotification::FunctionRemovedCallback(void* ctxt, BNBinaryView* object, BNFunction* func) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref<BinaryView> view = new BinaryView(BNNewViewReference(object)); + Ref<Function> funcObj = new Function(BNNewFunctionReference(func)); + notify->OnAnalysisFunctionRemoved(view, funcObj); +} + + BinaryDataNotification::BinaryDataNotification() { m_callbacks.context = this; m_callbacks.dataWritten = DataWrittenCallback; m_callbacks.dataInserted = DataInsertedCallback; m_callbacks.dataRemoved = DataRemovedCallback; + m_callbacks.functionAdded = FunctionAddedCallback; + m_callbacks.functionRemoved = FunctionRemovedCallback; } |
