diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-11-07 21:39:41 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-11-11 16:11:48 -0500 |
| commit | 1a565da676a7d1be45bfde1a5f40252838ccf5d8 (patch) | |
| tree | 6f22e0dabb94d4a27960ddfc73bc3451071da3ee /binaryview.cpp | |
| parent | 14d91ab76f7bcee588bcbb7e89639adae90c9f62 (diff) | |
Convenience helpers for type parsing in c++
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index e78333d5..e8c108a0 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -3565,6 +3565,27 @@ void BinaryView::DefineUserTypes(const vector<QualifiedNameAndType>& types, std: } +void BinaryView::DefineUserTypes(const vector<ParsedType>& types, std::function<bool(size_t, size_t)> progress) +{ + BNQualifiedNameAndType* apiTypes = new BNQualifiedNameAndType[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(); + } + + ProgressContext cb; + cb.callback = progress; + BNDefineUserAnalysisTypes(m_object, apiTypes, types.size(), ProgressCallback, &cb); + + for (size_t i = 0; i < types.size(); i++) + { + QualifiedName::FreeAPIObject(&apiTypes[i].name); + } + delete [] apiTypes; +} + + void BinaryView::UndefineType(const string& id) { BNUndefineAnalysisType(m_object, id.c_str()); |
