From 1a565da676a7d1be45bfde1a5f40252838ccf5d8 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Mon, 7 Nov 2022 21:39:41 -0500 Subject: Convenience helpers for type parsing in c++ --- binaryview.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'binaryview.cpp') 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& types, std: } +void BinaryView::DefineUserTypes(const vector& types, std::function 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()); -- cgit v1.3.1