diff options
| author | Peter LaFosse <peter@vector35.com> | 2024-02-11 11:30:41 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2024-02-11 11:30:41 -0500 |
| commit | 44d8b535bd12b81110d3a0826b895bd0d5657f2b (patch) | |
| tree | 59f1f182c11ba172c29aebaf35771b9016ac8a36 | |
| parent | ddce31c8d62c7ce0a385e5af65b0134c56e3b6c8 (diff) | |
Add BinaryView::GetTypeNameByGuid API
| -rw-r--r-- | binaryninjaapi.h | 8 | ||||
| -rw-r--r-- | binaryninjacore.h | 2 | ||||
| -rw-r--r-- | binaryview.cpp | 12 |
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(); |
