diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-05-25 20:33:02 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-05-25 20:33:02 -0400 |
| commit | 6e3f710c4ab4a5d874dc7ef6ddccb65c93b5f4f8 (patch) | |
| tree | 46f933ed597b2e112ba035362a16d38ac0a3cef2 | |
| parent | cd85acfec04e9204ba9caeb4f3feed27359e950d (diff) | |
BinaryView::DefineTypes with type ids
| -rw-r--r-- | binaryninjaapi.h | 2 | ||||
| -rw-r--r-- | binaryninjacore.h | 2 | ||||
| -rw-r--r-- | binaryview.cpp | 10 |
3 files changed, 8 insertions, 6 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index a65bff45..22b72ee4 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2126,7 +2126,7 @@ namespace BinaryNinja { QualifiedName GetTypeNameById(const std::string& id); bool IsTypeAutoDefined(const QualifiedName& name); QualifiedName DefineType(const std::string& id, const QualifiedName& defaultName, Ref<Type> type); - void DefineTypes(const std::vector<QualifiedNameAndType>& types, std::function<bool(size_t, size_t)> progress = {}); + void DefineTypes(const std::vector<std::pair<std::string, QualifiedNameAndType>>& types, std::function<bool(size_t, size_t)> progress = {}); void DefineUserType(const QualifiedName& name, Ref<Type> type); void DefineUserTypes(const std::vector<QualifiedNameAndType>& types, std::function<bool(size_t, size_t)> progress = {}); void UndefineType(const std::string& id); diff --git a/binaryninjacore.h b/binaryninjacore.h index 263f885e..9961f45b 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -4192,7 +4192,7 @@ extern "C" BINARYNINJACOREAPI BNQualifiedName BNDefineAnalysisType( BNBinaryView* view, const char* id, BNQualifiedName* defaultName, BNType* type); BINARYNINJACOREAPI void BNDefineUserAnalysisType(BNBinaryView* view, BNQualifiedName* name, BNType* type); - BINARYNINJACOREAPI void BNDefineAnalysisTypes(BNBinaryView* view, BNQualifiedNameAndType* types, size_t count, bool (*progress)(void*, size_t, size_t), void* progressContext); + BINARYNINJACOREAPI void BNDefineAnalysisTypes(BNBinaryView* view, BNQualifiedNameTypeAndId* types, size_t count, bool (*progress)(void*, size_t, size_t), void* progressContext); BINARYNINJACOREAPI void BNDefineUserAnalysisTypes(BNBinaryView* view, BNQualifiedNameAndType* types, size_t count, bool (*progress)(void*, size_t, size_t), void* progressContext); BINARYNINJACOREAPI void BNUndefineAnalysisType(BNBinaryView* view, const char* id); BINARYNINJACOREAPI void BNUndefineUserAnalysisType(BNBinaryView* view, BNQualifiedName* name); diff --git a/binaryview.cpp b/binaryview.cpp index 35097619..70d866ce 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -3250,13 +3250,14 @@ struct ProgressCallback }; -void BinaryView::DefineTypes(const vector<QualifiedNameAndType>& types, std::function<bool(size_t, size_t)> progress) +void BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& types, std::function<bool(size_t, size_t)> progress) { - BNQualifiedNameAndType* apiTypes = new BNQualifiedNameAndType[types.size()]; + BNQualifiedNameTypeAndId* apiTypes = new BNQualifiedNameTypeAndId[types.size()]; for (size_t i = 0; i < types.size(); i++) { - apiTypes[i].name = types[i].name.GetAPIObject(); - apiTypes[i].type = types[i].type->GetObject(); + apiTypes[i].name = types[i].second.name.GetAPIObject(); + apiTypes[i].type = types[i].second.type->GetObject(); + apiTypes[i].id = BNAllocString(types[i].first.c_str()); } ProgressCallback cb; @@ -3271,6 +3272,7 @@ void BinaryView::DefineTypes(const vector<QualifiedNameAndType>& types, std::fun for (size_t i = 0; i < types.size(); i++) { QualifiedName::FreeAPIObject(&apiTypes[i].name); + BNFreeString(apiTypes[i].id); } delete [] apiTypes; } |
