diff options
Diffstat (limited to 'lldb/source/API/SBTarget.cpp')
-rw-r--r-- | lldb/source/API/SBTarget.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp index 22504402115..82da45a3225 100644 --- a/lldb/source/API/SBTarget.cpp +++ b/lldb/source/API/SBTarget.cpp @@ -38,6 +38,7 @@ #include "lldb/Host/FileSpec.h" #include "lldb/Host/Host.h" #include "lldb/Interpreter/Args.h" +#include "lldb/Symbol/SymbolVendor.h" #include "lldb/Symbol/VariableList.h" #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" @@ -879,6 +880,52 @@ SBTarget::FindFunctions (const char *name, return 0; } +lldb::SBType +SBTarget::FindFirstType (const char* type) +{ + if (m_opaque_sp) + { + size_t count = m_opaque_sp->GetImages().GetSize(); + for (size_t idx = 0; idx < count; idx++) + { + SBType found_at_idx = GetModuleAtIndex(idx).FindFirstType(type); + + if (found_at_idx.IsValid()) + return found_at_idx; + } + } + return SBType(); +} + +lldb::SBTypeList +SBTarget::FindTypes (const char* type) +{ + + SBTypeList retval; + + if (m_opaque_sp) + { + ModuleList& images = m_opaque_sp->GetImages(); + ConstString name_const(type); + SymbolContext sc; + TypeList type_list; + + uint32_t num_matches = images.FindTypes(sc, + name_const, + true, + UINT32_MAX, + type_list); + + for (size_t idx = 0; idx < num_matches; idx++) + { + TypeSP sp_at_idx = type_list.GetTypeAtIndex(idx); + + retval.AppendType(SBType(sp_at_idx)); + } + } + return retval; +} + SBValueList SBTarget::FindGlobalVariables (const char *name, uint32_t max_matches) { |