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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user