summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2024-02-11 11:30:41 -0500
committerPeter LaFosse <peter@vector35.com>2024-02-11 11:30:41 -0500
commit44d8b535bd12b81110d3a0826b895bd0d5657f2b (patch)
tree59f1f182c11ba172c29aebaf35771b9016ac8a36
parentddce31c8d62c7ce0a385e5af65b0134c56e3b6c8 (diff)
Add BinaryView::GetTypeNameByGuid API
-rw-r--r--binaryninjaapi.h8
-rw-r--r--binaryninjacore.h2
-rw-r--r--binaryview.cpp12
3 files changed, 22 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 39a0be59..d412464d 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -5943,6 +5943,14 @@ namespace BinaryNinja {
*/
Ref<Type> ImportTypeLibraryTypeByGuid(const std::string& guid);
+
+ /* Looks up the name of a type by its guid in the current BinaryView's set of type libraries
+
+ \param guid
+ \return The QualifedName of the type or std::nullopt if it was not found
+ */
+ std::optional<QualifiedName> GetTypeNameByGuid(const std::string& guid);
+
/*! Recursively exports ``type`` into ``lib`` as a type with name ``name``
As other referenced types are encountered, they are either copied into the destination type library or
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 9472339e..e7c895de 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -5594,6 +5594,8 @@ extern "C"
BNBinaryView* view, BNTypeLibrary** lib, BNQualifiedName* name);
BINARYNINJACOREAPI BNType* BNBinaryViewImportTypeLibraryTypeByGuid(
BNBinaryView* view, const char* guid);
+ BINARYNINJACOREAPI BNQualifiedName BNBinaryViewGetTypeNameByGuid(
+ BNBinaryView* view, const char* guid);
BINARYNINJACOREAPI void BNBinaryViewExportTypeToTypeLibrary(
BNBinaryView* view, BNTypeLibrary* lib, BNQualifiedName* name, BNType* type);
diff --git a/binaryview.cpp b/binaryview.cpp
index 4a6adb92..057c0954 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -4212,6 +4212,18 @@ Ref<Type> BinaryView::ImportTypeLibraryTypeByGuid(const string& guid)
}
+std::optional<QualifiedName> BinaryView::GetTypeNameByGuid(const std::string& guid)
+{
+ auto result = BNBinaryViewGetTypeNameByGuid(m_object, guid.c_str());
+ if (result.nameCount == 0)
+ return std::nullopt;
+
+ auto name = QualifiedName::FromAPIObject(&result);
+ BNFreeQualifiedName(&result);
+ return name;
+}
+
+
void BinaryView::ExportTypeToTypeLibrary(TypeLibrary* lib, const QualifiedName& name, Type* type)
{
BNQualifiedName apiName = name.GetAPIObject();