diff options
author | Enrico Granata <granata.enrico@gmail.com> | 2011-07-29 19:53:35 +0000 |
---|---|---|
committer | Enrico Granata <granata.enrico@gmail.com> | 2011-07-29 19:53:35 +0000 |
commit | 6f3533fb1d742620328b4fcc79410d3e09d6eb8d (patch) | |
tree | 4ed75acf7c94fefcab457f17a568827d5b0e3c22 /lldb/source/API/SBModule.cpp | |
parent | ce0ceebb1c5f896e992e1cac36fad732daf55cb0 (diff) | |
download | llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.zip llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.tar.gz llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.tar.bz2 |
Public API changes:
- Completely new implementation of SBType
- Various enhancements in several other classes
Python synthetic children providers for std::vector<T>, std::list<T> and std::map<K,V>:
- these return the actual elements into the container as the children of the container
- basic template name parsing that works (hopefully) on both Clang and GCC
- find them in examples/synthetic and in the test suite in functionalities/data-formatter/data-formatter-python-synth
New summary string token ${svar :
- the syntax is just the same as in ${var but this new token lets you read the values
coming from the synthetic children provider instead of the actual children
- Python providers above provide a synthetic child len that returns the number of elements
into the container
Full bug fix for the issue in which getting byte size for a non-complete type would crash LLDB
Several other fixes, including:
- inverted the order of arguments in the ClangASTType constructor
- EvaluationPoint now only returns SharedPointer's to Target and Process
- the help text for several type subcommands now correctly indicates argument-less options as such
llvm-svn: 136504
Diffstat (limited to 'lldb/source/API/SBModule.cpp')
-rw-r--r-- | lldb/source/API/SBModule.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lldb/source/API/SBModule.cpp b/lldb/source/API/SBModule.cpp index 852952a..faeb5e9 100644 --- a/lldb/source/API/SBModule.cpp +++ b/lldb/source/API/SBModule.cpp @@ -17,6 +17,7 @@ #include "lldb/Core/StreamString.h" #include "lldb/Core/ValueObjectList.h" #include "lldb/Core/ValueObjectVariable.h" +#include "lldb/Symbol/SymbolVendor.h" #include "lldb/Symbol/VariableList.h" #include "lldb/Target/Target.h" @@ -342,3 +343,59 @@ SBModule::FindGlobalVariables (SBTarget &target, const char *name, uint32_t max_ return sb_value_list; } + +lldb::SBType +SBModule::FindFirstType (const char* name_cstr) +{ + if (!IsValid()) + return lldb::SBType(); + + SymbolContext sc; + TypeList type_list; + uint32_t num_matches = 0; + ConstString name(name_cstr); + + num_matches = m_opaque_sp->FindTypes(sc, + name, + false, + 1, + type_list); + + if (num_matches) + { + TypeSP type_sp (type_list.GetTypeAtIndex(0)); + return lldb::SBType(type_sp); + } + else + return lldb::SBType(); +} + +lldb::SBTypeList +SBModule::FindTypes (const char* type) +{ + + SBTypeList retval; + + if (!IsValid()) + return retval; + + SymbolContext sc; + TypeList type_list; + uint32_t num_matches = 0; + ConstString name(type); + + num_matches = m_opaque_sp->FindTypes(sc, + name, + false, + 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; +}
\ No newline at end of file |