aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/API/SBModule.cpp
diff options
context:
space:
mode:
authorEnrico Granata <granata.enrico@gmail.com>2011-07-29 19:53:35 +0000
committerEnrico Granata <granata.enrico@gmail.com>2011-07-29 19:53:35 +0000
commit6f3533fb1d742620328b4fcc79410d3e09d6eb8d (patch)
tree4ed75acf7c94fefcab457f17a568827d5b0e3c22 /lldb/source/API/SBModule.cpp
parentce0ceebb1c5f896e992e1cac36fad732daf55cb0 (diff)
downloadllvm-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.cpp57
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