diff options
| author | Peter LaFosse <peter@vector35.com> | 2019-09-19 17:31:44 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2019-09-27 21:07:22 -0400 |
| commit | 052b1ea7871c3bfd780a73bcac942db54c95422e (patch) | |
| tree | 23b72e1461868c096580ae3f6ebe02d4add06d26 /binaryview.cpp | |
| parent | bafb7665495735a758caf1d6334577bc0860c5d8 (diff) | |
Tag notifications & tag type list optimized
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index dc2212a6..5cec7b10 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -122,6 +122,39 @@ void BinaryDataNotification::DataMetadataUpdatedCallback(void* ctxt, BNBinaryVie } +void BinaryDataNotification::TagTypeUpdatedCallback(void* ctxt, BNBinaryView* object, BNTagType* tagType) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref<BinaryView> view = new BinaryView(BNNewViewReference(object)); + Ref<TagType> tagTypeRef = new TagType(BNNewTagTypeReference(tagType)); + notify->OnTagTypeUpdated(view, tagTypeRef); +} + + +void BinaryDataNotification::TagAddedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref<BinaryView> view = new BinaryView(BNNewViewReference(object)); + notify->OnTagAdded(view, TagReference(*tagRef)); +} + + +void BinaryDataNotification::TagUpdatedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref<BinaryView> view = new BinaryView(BNNewViewReference(object)); + notify->OnTagUpdated(view, TagReference(*tagRef)); +} + + +void BinaryDataNotification::TagRemovedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref<BinaryView> view = new BinaryView(BNNewViewReference(object)); + notify->OnTagRemoved(view, TagReference(*tagRef)); +} + + void BinaryDataNotification::SymbolAddedCallback(void* ctxt, BNBinaryView* object, BNSymbol* symobj) { BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; @@ -197,6 +230,10 @@ BinaryDataNotification::BinaryDataNotification() m_callbacks.dataVariableRemoved = DataVariableRemovedCallback; m_callbacks.dataVariableUpdated = DataVariableUpdatedCallback; m_callbacks.dataMetadataUpdated = DataMetadataUpdatedCallback; + m_callbacks.tagTypeUpdated = TagTypeUpdatedCallback; + m_callbacks.tagAdded = TagAddedCallback; + m_callbacks.tagUpdated = TagUpdatedCallback; + m_callbacks.tagRemoved = TagRemovedCallback; m_callbacks.symbolAdded = SymbolAddedCallback; m_callbacks.symbolUpdated = SymbolUpdatedCallback; m_callbacks.symbolRemoved = SymbolRemovedCallback; @@ -2047,15 +2084,15 @@ std::vector<Ref<TagType>> BinaryView::GetTagTypes() } -void BinaryView::AddTag(Ref<Tag> tag) +void BinaryView::AddTag(Ref<Tag> tag, bool user) { - BNAddTag(m_object, tag->GetObject()); + BNAddTag(m_object, tag->GetObject(), user); } -void BinaryView::RemoveTag(Ref<Tag> tag) +void BinaryView::RemoveTag(Ref<Tag> tag, bool user) { - BNRemoveTag(m_object, tag->GetObject()); + BNRemoveTag(m_object, tag->GetObject(), user); } @@ -2109,6 +2146,18 @@ std::vector<TagReference> BinaryView::GetTagReferencesOfType(Ref<TagType> tagTyp } +size_t BinaryView::GetAllTagReferencesOfTypeCount(Ref<TagType> tagType) +{ + return BNGetAllTagReferencesOfTypeCount(m_object, tagType->GetObject()); +} + + +size_t BinaryView::GetTagReferencesOfTypeCount(Ref<TagType> tagType) +{ + return BNGetTagReferencesOfTypeCount(m_object, tagType->GetObject()); +} + + std::vector<TagReference> BinaryView::GetDataTagReferences() { size_t count; |
