diff options
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index 8c6080d0..e8c080df 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -3494,12 +3494,6 @@ void BinaryView::DefineUserType(const QualifiedName& name, Ref<Type> type) } -struct ProgressCallback -{ - std::function<bool(size_t, size_t)> func; -}; - - void BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& types, std::function<bool(size_t, size_t)> progress) { BNQualifiedNameTypeAndId* apiTypes = new BNQualifiedNameTypeAndId[types.size()]; @@ -3510,14 +3504,9 @@ void BinaryView::DefineTypes(const vector<pair<string, QualifiedNameAndType>>& t apiTypes[i].id = BNAllocString(types[i].first.c_str()); } - ProgressCallback cb; - cb.func = progress; - BNDefineAnalysisTypes(m_object, apiTypes, types.size(), [](void* ctxt, size_t cur, size_t total) { - ProgressCallback* cb = (ProgressCallback*)ctxt; - if (cb->func) - return cb->func(cur, total); - return true; - }, &cb); + ProgressContext cb; + cb.callback = progress; + BNDefineAnalysisTypes(m_object, apiTypes, types.size(), ProgressCallback, &cb); for (size_t i = 0; i < types.size(); i++) { @@ -3537,14 +3526,9 @@ void BinaryView::DefineUserTypes(const vector<QualifiedNameAndType>& types, std: apiTypes[i].type = types[i].type->GetObject(); } - ProgressCallback cb; - cb.func = progress; - BNDefineUserAnalysisTypes(m_object, apiTypes, types.size(), [](void* ctxt, size_t cur, size_t total) { - ProgressCallback* cb = (ProgressCallback*)ctxt; - if (cb->func) - return cb->func(cur, total); - return true; - }, &cb); + ProgressContext cb; + cb.callback = progress; + BNDefineUserAnalysisTypes(m_object, apiTypes, types.size(), ProgressCallback, &cb); for (size_t i = 0; i < types.size(); i++) { |
