From 3808f91664f9632eb9d754a1ff99447b50468b36 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Sat, 3 Jul 2021 01:08:47 -0400 Subject: Cleanup tags and comments in many places Fixes #1926 #2374 #2325 #2204 #1652 and possibly others --- function.cpp | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) (limited to 'function.cpp') diff --git a/function.cpp b/function.cpp index 36d5a313..70985d64 100644 --- a/function.cpp +++ b/function.cpp @@ -1557,6 +1557,22 @@ std::vector Function::GetAddressTagReferences() } +std::vector Function::GetAutoAddressTagReferences() +{ + size_t count; + BNTagReference* refs = BNGetAutoAddressTagReferences(m_object, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + +std::vector Function::GetUserAddressTagReferences() +{ + size_t count; + BNTagReference* refs = BNGetUserAddressTagReferences(m_object, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + std::vector> Function::GetAddressTags(Architecture* arch, uint64_t addr) { size_t count; @@ -1565,6 +1581,22 @@ std::vector> Function::GetAddressTags(Architecture* arch, uint64_t addr } +std::vector> Function::GetAutoAddressTags(Architecture* arch, uint64_t addr) +{ + size_t count; + BNTag** tags = BNGetAutoAddressTags(m_object, arch->GetObject(), addr, &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + +std::vector> Function::GetUserAddressTags(Architecture* arch, uint64_t addr) +{ + size_t count; + BNTag** tags = BNGetUserAddressTags(m_object, arch->GetObject(), addr, &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + std::vector> Function::GetAddressTagsOfType(Architecture* arch, uint64_t addr, Ref tagType) { size_t count; @@ -1573,6 +1605,46 @@ std::vector> Function::GetAddressTagsOfType(Architecture* arch, uint64_ } +std::vector> Function::GetAutoAddressTagsOfType(Architecture* arch, uint64_t addr, Ref tagType) +{ + size_t count; + BNTag** tags = BNGetAutoAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject(), &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + +std::vector> Function::GetUserAddressTagsOfType(Architecture* arch, uint64_t addr, Ref tagType) +{ + size_t count; + BNTag** tags = BNGetUserAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject(), &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + +std::vector Function::GetAddressTagsInRange(Architecture* arch, uint64_t start, uint64_t end) +{ + size_t count; + BNTagReference* refs = BNGetAddressTagsInRange(m_object, arch->GetObject(), start, end, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + +std::vector Function::GetAutoAddressTagsInRange(Architecture* arch, uint64_t start, uint64_t end) +{ + size_t count; + BNTagReference* refs = BNGetAutoAddressTagsInRange(m_object, arch->GetObject(), start, end, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + +std::vector Function::GetUserAddressTagsInRange(Architecture* arch, uint64_t start, uint64_t end) +{ + size_t count; + BNTagReference* refs = BNGetUserAddressTagsInRange(m_object, arch->GetObject(), start, end, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + void Function::AddAutoAddressTag(Architecture* arch, uint64_t addr, Ref tag) { BNAddAutoAddressTag(m_object, arch->GetObject(), addr, tag->GetObject()); @@ -1585,6 +1657,12 @@ void Function::RemoveAutoAddressTag(Architecture* arch, uint64_t addr, Ref } +void Function::RemoveAutoAddressTagsOfType(Architecture* arch, uint64_t addr, Ref tagType) +{ + BNRemoveAutoAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject()); +} + + void Function::AddUserAddressTag(Architecture* arch, uint64_t addr, Ref tag) { BNAddUserAddressTag(m_object, arch->GetObject(), addr, tag->GetObject()); @@ -1597,6 +1675,12 @@ void Function::RemoveUserAddressTag(Architecture* arch, uint64_t addr, Ref } +void Function::RemoveUserAddressTagsOfType(Architecture* arch, uint64_t addr, Ref tagType) +{ + BNRemoveUserAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject()); +} + + std::vector Function::GetFunctionTagReferences() { size_t count; @@ -1605,6 +1689,22 @@ std::vector Function::GetFunctionTagReferences() } +std::vector Function::GetAutoFunctionTagReferences() +{ + size_t count; + BNTagReference* refs = BNGetAutoFunctionTagReferences(m_object, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + +std::vector Function::GetUserFunctionTagReferences() +{ + size_t count; + BNTagReference* refs = BNGetUserFunctionTagReferences(m_object, &count); + return TagReference::ConvertAndFreeTagReferenceList(refs, count); +} + + std::vector> Function::GetFunctionTags() { size_t count; @@ -1613,6 +1713,22 @@ std::vector> Function::GetFunctionTags() } +std::vector> Function::GetAutoFunctionTags() +{ + size_t count; + BNTag** tags = BNGetAutoFunctionTags(m_object, &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + +std::vector> Function::GetUserFunctionTags() +{ + size_t count; + BNTag** tags = BNGetUserFunctionTags(m_object, &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + std::vector> Function::GetFunctionTagsOfType(Ref tagType) { size_t count; @@ -1621,6 +1737,22 @@ std::vector> Function::GetFunctionTagsOfType(Ref tagType) } +std::vector> Function::GetAutoFunctionTagsOfType(Ref tagType) +{ + size_t count; + BNTag** tags = BNGetAutoFunctionTagsOfType(m_object, tagType->GetObject(), &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + +std::vector> Function::GetUserFunctionTagsOfType(Ref tagType) +{ + size_t count; + BNTag** tags = BNGetUserFunctionTagsOfType(m_object, tagType->GetObject(), &count); + return Tag::ConvertAndFreeTagList(tags, count); +} + + void Function::AddAutoFunctionTag(Ref tag) { BNAddAutoFunctionTag(m_object, tag->GetObject()); @@ -1633,6 +1765,12 @@ void Function::RemoveAutoFunctionTag(Ref tag) } +void Function::RemoveAutoFunctionTagsOfType(Ref tagType) +{ + BNRemoveAutoFunctionTagsOfType(m_object, tagType->GetObject()); +} + + void Function::AddUserFunctionTag(Ref tag) { BNAddUserFunctionTag(m_object, tag->GetObject()); @@ -1645,6 +1783,12 @@ void Function::RemoveUserFunctionTag(Ref tag) } +void Function::RemoveUserFunctionTagsOfType(Ref tagType) +{ + BNRemoveUserFunctionTagsOfType(m_object, tagType->GetObject()); +} + + Ref Function::CreateAutoAddressTag(Architecture* arch, uint64_t addr, const std::string& tagTypeName, const std::string& data, bool unique) { Ref tagType = GetView()->GetTagTypeByName(tagTypeName); -- cgit v1.3.1