From 052b1ea7871c3bfd780a73bcac942db54c95422e Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Thu, 19 Sep 2019 17:31:44 -0400 Subject: Tag notifications & tag type list optimized --- binaryview.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) (limited to 'binaryview.cpp') 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 view = new BinaryView(BNNewViewReference(object)); + Ref tagTypeRef = new TagType(BNNewTagTypeReference(tagType)); + notify->OnTagTypeUpdated(view, tagTypeRef); +} + + +void BinaryDataNotification::TagAddedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref view = new BinaryView(BNNewViewReference(object)); + notify->OnTagAdded(view, TagReference(*tagRef)); +} + + +void BinaryDataNotification::TagUpdatedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref view = new BinaryView(BNNewViewReference(object)); + notify->OnTagUpdated(view, TagReference(*tagRef)); +} + + +void BinaryDataNotification::TagRemovedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef) +{ + BinaryDataNotification* notify = (BinaryDataNotification*)ctxt; + Ref 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> BinaryView::GetTagTypes() } -void BinaryView::AddTag(Ref tag) +void BinaryView::AddTag(Ref tag, bool user) { - BNAddTag(m_object, tag->GetObject()); + BNAddTag(m_object, tag->GetObject(), user); } -void BinaryView::RemoveTag(Ref tag) +void BinaryView::RemoveTag(Ref tag, bool user) { - BNRemoveTag(m_object, tag->GetObject()); + BNRemoveTag(m_object, tag->GetObject(), user); } @@ -2109,6 +2146,18 @@ std::vector BinaryView::GetTagReferencesOfType(Ref tagTyp } +size_t BinaryView::GetAllTagReferencesOfTypeCount(Ref tagType) +{ + return BNGetAllTagReferencesOfTypeCount(m_object, tagType->GetObject()); +} + + +size_t BinaryView::GetTagReferencesOfTypeCount(Ref tagType) +{ + return BNGetTagReferencesOfTypeCount(m_object, tagType->GetObject()); +} + + std::vector BinaryView::GetDataTagReferences() { size_t count; -- cgit v1.3.1