summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2021-07-03 01:08:47 -0400
committerGlenn Smith <glenn@vector35.com>2021-07-09 16:39:09 -0400
commit3808f91664f9632eb9d754a1ff99447b50468b36 (patch)
tree44f0dbf857de5aeeb03fe27fb2c11aa136074682 /function.cpp
parentd19f5e85ee26c3d6604798d30ab821d15731cada (diff)
Cleanup tags and comments in many places
Fixes #1926 #2374 #2325 #2204 #1652 and possibly others
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/function.cpp b/function.cpp
index 36d5a313..70985d64 100644
--- a/function.cpp
+++ b/function.cpp
@@ -1557,6 +1557,22 @@ std::vector<TagReference> Function::GetAddressTagReferences()
}
+std::vector<TagReference> Function::GetAutoAddressTagReferences()
+{
+ size_t count;
+ BNTagReference* refs = BNGetAutoAddressTagReferences(m_object, &count);
+ return TagReference::ConvertAndFreeTagReferenceList(refs, count);
+}
+
+
+std::vector<TagReference> Function::GetUserAddressTagReferences()
+{
+ size_t count;
+ BNTagReference* refs = BNGetUserAddressTagReferences(m_object, &count);
+ return TagReference::ConvertAndFreeTagReferenceList(refs, count);
+}
+
+
std::vector<Ref<Tag>> Function::GetAddressTags(Architecture* arch, uint64_t addr)
{
size_t count;
@@ -1565,6 +1581,22 @@ std::vector<Ref<Tag>> Function::GetAddressTags(Architecture* arch, uint64_t addr
}
+std::vector<Ref<Tag>> 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<Ref<Tag>> 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<Ref<Tag>> Function::GetAddressTagsOfType(Architecture* arch, uint64_t addr, Ref<TagType> tagType)
{
size_t count;
@@ -1573,6 +1605,46 @@ std::vector<Ref<Tag>> Function::GetAddressTagsOfType(Architecture* arch, uint64_
}
+std::vector<Ref<Tag>> Function::GetAutoAddressTagsOfType(Architecture* arch, uint64_t addr, Ref<TagType> tagType)
+{
+ size_t count;
+ BNTag** tags = BNGetAutoAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject(), &count);
+ return Tag::ConvertAndFreeTagList(tags, count);
+}
+
+
+std::vector<Ref<Tag>> Function::GetUserAddressTagsOfType(Architecture* arch, uint64_t addr, Ref<TagType> tagType)
+{
+ size_t count;
+ BNTag** tags = BNGetUserAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject(), &count);
+ return Tag::ConvertAndFreeTagList(tags, count);
+}
+
+
+std::vector<TagReference> 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<TagReference> 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<TagReference> 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> tag)
{
BNAddAutoAddressTag(m_object, arch->GetObject(), addr, tag->GetObject());
@@ -1585,6 +1657,12 @@ void Function::RemoveAutoAddressTag(Architecture* arch, uint64_t addr, Ref<Tag>
}
+void Function::RemoveAutoAddressTagsOfType(Architecture* arch, uint64_t addr, Ref<TagType> tagType)
+{
+ BNRemoveAutoAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject());
+}
+
+
void Function::AddUserAddressTag(Architecture* arch, uint64_t addr, Ref<Tag> tag)
{
BNAddUserAddressTag(m_object, arch->GetObject(), addr, tag->GetObject());
@@ -1597,6 +1675,12 @@ void Function::RemoveUserAddressTag(Architecture* arch, uint64_t addr, Ref<Tag>
}
+void Function::RemoveUserAddressTagsOfType(Architecture* arch, uint64_t addr, Ref<TagType> tagType)
+{
+ BNRemoveUserAddressTagsOfType(m_object, arch->GetObject(), addr, tagType->GetObject());
+}
+
+
std::vector<TagReference> Function::GetFunctionTagReferences()
{
size_t count;
@@ -1605,6 +1689,22 @@ std::vector<TagReference> Function::GetFunctionTagReferences()
}
+std::vector<TagReference> Function::GetAutoFunctionTagReferences()
+{
+ size_t count;
+ BNTagReference* refs = BNGetAutoFunctionTagReferences(m_object, &count);
+ return TagReference::ConvertAndFreeTagReferenceList(refs, count);
+}
+
+
+std::vector<TagReference> Function::GetUserFunctionTagReferences()
+{
+ size_t count;
+ BNTagReference* refs = BNGetUserFunctionTagReferences(m_object, &count);
+ return TagReference::ConvertAndFreeTagReferenceList(refs, count);
+}
+
+
std::vector<Ref<Tag>> Function::GetFunctionTags()
{
size_t count;
@@ -1613,6 +1713,22 @@ std::vector<Ref<Tag>> Function::GetFunctionTags()
}
+std::vector<Ref<Tag>> Function::GetAutoFunctionTags()
+{
+ size_t count;
+ BNTag** tags = BNGetAutoFunctionTags(m_object, &count);
+ return Tag::ConvertAndFreeTagList(tags, count);
+}
+
+
+std::vector<Ref<Tag>> Function::GetUserFunctionTags()
+{
+ size_t count;
+ BNTag** tags = BNGetUserFunctionTags(m_object, &count);
+ return Tag::ConvertAndFreeTagList(tags, count);
+}
+
+
std::vector<Ref<Tag>> Function::GetFunctionTagsOfType(Ref<TagType> tagType)
{
size_t count;
@@ -1621,6 +1737,22 @@ std::vector<Ref<Tag>> Function::GetFunctionTagsOfType(Ref<TagType> tagType)
}
+std::vector<Ref<Tag>> Function::GetAutoFunctionTagsOfType(Ref<TagType> tagType)
+{
+ size_t count;
+ BNTag** tags = BNGetAutoFunctionTagsOfType(m_object, tagType->GetObject(), &count);
+ return Tag::ConvertAndFreeTagList(tags, count);
+}
+
+
+std::vector<Ref<Tag>> Function::GetUserFunctionTagsOfType(Ref<TagType> tagType)
+{
+ size_t count;
+ BNTag** tags = BNGetUserFunctionTagsOfType(m_object, tagType->GetObject(), &count);
+ return Tag::ConvertAndFreeTagList(tags, count);
+}
+
+
void Function::AddAutoFunctionTag(Ref<Tag> tag)
{
BNAddAutoFunctionTag(m_object, tag->GetObject());
@@ -1633,6 +1765,12 @@ void Function::RemoveAutoFunctionTag(Ref<Tag> tag)
}
+void Function::RemoveAutoFunctionTagsOfType(Ref<TagType> tagType)
+{
+ BNRemoveAutoFunctionTagsOfType(m_object, tagType->GetObject());
+}
+
+
void Function::AddUserFunctionTag(Ref<Tag> tag)
{
BNAddUserFunctionTag(m_object, tag->GetObject());
@@ -1645,6 +1783,12 @@ void Function::RemoveUserFunctionTag(Ref<Tag> tag)
}
+void Function::RemoveUserFunctionTagsOfType(Ref<TagType> tagType)
+{
+ BNRemoveUserFunctionTagsOfType(m_object, tagType->GetObject());
+}
+
+
Ref<Tag> Function::CreateAutoAddressTag(Architecture* arch, uint64_t addr, const std::string& tagTypeName, const std::string& data, bool unique)
{
Ref<TagType> tagType = GetView()->GetTagTypeByName(tagTypeName);