diff options
| author | Glenn Smith <glenn@vector35.com> | 2023-08-16 17:34:39 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2023-08-16 17:34:39 -0400 |
| commit | 5823930694686322430747031324833666177725 (patch) | |
| tree | a20930a37a49eee0f0ecc0d287049e2b34825b73 /binaryview.cpp | |
| parent | e613b78c2fda396ffb7d54261681db88a788bd87 (diff) | |
Add DefineUserTypes to Rust/Python (+ fix return type)
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index b1bd6f4d..6120e10f 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -3731,7 +3731,7 @@ void BinaryView::DefineUserType(const QualifiedName& name, Ref<Type> type) } -void BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& types, std::function<bool(size_t, size_t)> progress) +std::unordered_map<std::string, QualifiedName> BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& types, std::function<bool(size_t, size_t)> progress) { BNQualifiedNameTypeAndId* apiTypes = new BNQualifiedNameTypeAndId[types.size()]; for (size_t i = 0; i < types.size(); i++) @@ -3743,7 +3743,20 @@ void BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& t ProgressContext cb; cb.callback = progress; - BNDefineAnalysisTypes(m_object, apiTypes, types.size(), ProgressCallback, &cb); + char** resultIds; + BNQualifiedName* resultNames; + size_t resultCount = BNDefineAnalysisTypes(m_object, apiTypes, types.size(), ProgressCallback, &cb, &resultIds, &resultNames); + + unordered_map<string, QualifiedName> result; + for (size_t i = 0; i < resultCount; i ++) + { + string id = resultIds[i]; + QualifiedName name = QualifiedName::FromAPIObject(&resultNames[i]); + result.insert({id, name}); + } + + BNFreeStringList(resultIds, resultCount); + BNFreeTypeNameList(resultNames, resultCount); for (size_t i = 0; i < types.size(); i++) { @@ -3751,6 +3764,8 @@ void BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& t BNFreeString(apiTypes[i].id); } delete [] apiTypes; + + return result; } |
