From f48203de0acafb1d981d56c79d0edff921102065 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Thu, 20 Sep 2018 16:51:14 -0400 Subject: Adding NameSpace tokens and plumbing through some namespce apis --- binaryview.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'binaryview.cpp') diff --git a/binaryview.cpp b/binaryview.cpp index e9e8b377..1540e049 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -192,6 +192,13 @@ BNSymbolType Symbol::GetType() const } +NameSpace Symbol::GetNameSpace() const +{ + BNNameSpace name = BNGetSymbolNameSpace(m_object); + return NameSpace::FromAPIObject(&name); +} + + string Symbol::GetShortName() const { char* name = BNGetSymbolShortName(m_object); @@ -1274,6 +1281,7 @@ vector> BinaryView::GetAnalysisFunctionList() result.push_back(new Function(BNNewFunctionReference(list[i]))); BNFreeFunctionList(list, count); + return result; } @@ -1515,9 +1523,19 @@ vector> BinaryView::GetSymbolsOfType(BNSymbolType type, uint64_t sta } -void BinaryView::DefineAutoSymbol(Ref sym) +void BinaryView::DefineAutoSymbol(Ref sym, const NameSpace& nameSpace) { - BNDefineAutoSymbol(m_object, sym->GetObject()); + BNNameSpace ns; + ns.join = BNAllocString(nameSpace.GetJoinString().c_str()); + ns.name = new char*[nameSpace.size()]; + for (size_t i = 0; i < nameSpace.size(); i++) + ns.name[i] = BNAllocString(nameSpace[i].c_str()); + ns.nameCount = nameSpace.size(); + BNDefineAutoSymbol(m_object, sym->GetObject(), &ns); + BNFreeString(ns.join); + for (size_t i = 0; i < nameSpace.size(); i++) + BNFreeString(ns.name[i]); + delete[] ns.name; } -- cgit v1.3.1