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
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136504 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/scripts/Python/interface/SBModule.i b/scripts/Python/interface/SBModule.i
index cea05e7..6f78dff 100644
--- a/scripts/Python/interface/SBModule.i
+++ b/scripts/Python/interface/SBModule.i
@@ -137,6 +137,13 @@
uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
bool append,
lldb::SBSymbolContextList& sc_list);
+
+ lldb::SBType
+ FindFirstType (const char* name);
+
+ lldb::SBTypeList
+ FindTypes (const char* type);
+
%feature("docstring", "
//------------------------------------------------------------------
diff --git a/scripts/Python/interface/SBTarget.i b/scripts/Python/interface/SBTarget.i
index 3ad6bed..4064620 100644
--- a/scripts/Python/interface/SBTarget.i
+++ b/scripts/Python/interface/SBTarget.i
@@ -320,6 +320,12 @@
uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
bool append,
lldb::SBSymbolContextList& sc_list);
+
+ lldb::SBType
+ FindFirstType (const char* type);
+
+ lldb::SBTypeList
+ FindTypes (const char* type);
%feature("docstring", "
//------------------------------------------------------------------
diff --git a/scripts/Python/interface/SBType.i b/scripts/Python/interface/SBType.i
index e7d57b4..03cfe44 100644
--- a/scripts/Python/interface/SBType.i
+++ b/scripts/Python/interface/SBType.i
@@ -9,91 +9,63 @@
namespace lldb {
-class SBTypeMember;
-
-class SBType
-{
-public:
-
- SBType (void *ast = NULL, void *clang_type = NULL);
+ class SBType
+ {
+ public:
+
+ SBType (const SBType &rhs);
+
+ ~SBType ();
+
+ bool
+ IsValid() const;
+
+ size_t
+ GetByteSize() const;
+
+ bool
+ IsPointerType() const;
+
+ bool
+ IsReferenceType() const;
+
+ SBType
+ GetPointerType() const;
+
+ SBType
+ GetPointeeType() const;
+
+ SBType
+ GetReferenceType() const;
+
+ SBType
+ GetDereferencedType() const;
+
+ SBType
+ GetBasicType(lldb::BasicType type) const;
+
+ const char*
+ GetName();
+ };
- SBType (const SBType &rhs);
-
- ~SBType ();
-
- bool
- IsValid();
-
- const char *
- GetName();
-
- uint64_t
- GetByteSize();
-
- uint64_t
- GetNumberChildren (bool omit_empty_base_classes);
-
- bool
- GetChildAtIndex (bool omit_empty_base_classes, uint32_t idx, SBTypeMember &member);
-
- uint32_t
- GetChildIndexForName (bool omit_empty_base_classes, const char *name);
-
- bool
- IsAPointerType ();
-
- SBType
- GetPointeeType ();
-
- static bool
- IsPointerType (void *opaque_type);
-
- bool
- GetDescription (lldb::SBStream &description);
-};
-
-class SBTypeMember
-{
-public:
-
- SBTypeMember ();
-
- SBTypeMember (const SBTypeMember &rhs);
-
- ~SBTypeMember ();
-
- bool
- IsBaseClass ();
-
- bool
- IsValid ();
-
- void
- Clear();
-
- bool
- IsBitfield ();
-
- size_t
- GetBitfieldWidth ();
-
- size_t
- GetBitfieldOffset ();
-
- size_t
- GetOffset ();
-
- const char *
- GetName ();
-
- SBType
- GetType();
-
- SBType
- GetParentType();
-
- void
- SetName (const char *name);
-};
+ class SBTypeList
+ {
+ public:
+ SBTypeList();
+
+ void
+ AppendType(SBType type);
+
+ SBType
+ GetTypeAtIndex(int index);
+
+ int
+ GetSize();
+
+ ~SBTypeList();
+
+ private:
+ std::auto_ptr<SBTypeListImpl> m_content;
+ };
} // namespace lldb
diff --git a/scripts/Python/interface/SBValue.i b/scripts/Python/interface/SBValue.i
index 68e97e3..24f9660 100644
--- a/scripts/Python/interface/SBValue.i
+++ b/scripts/Python/interface/SBValue.i
@@ -203,7 +203,22 @@
GetChildAtIndex (uint32_t idx,
lldb::DynamicValueType use_dynamic,
bool can_create_synthetic);
+
+ lldb::SBValue
+ CreateChildAtOffset (const char *name, uint32_t offset, const SBType& type);
+
+ lldb::SBValue
+ SBValue::Cast(const SBType& type);
+ lldb::SBValue
+ CreateValueFromExpression (const char *name, const char* expression);
+
+ lldb::SBValue
+ CreateValueFromAddress(const char* name, lldb::addr_t address, const SBType& type);
+
+ lldb::SBType
+ GetType();
+
%feature("docstring", "
//------------------------------------------------------------------
/// Returns the child member index.
@@ -257,13 +272,27 @@
void *
GetOpaqueType();
-
lldb::SBValue
Dereference ();
+ lldb::SBValue
+ AddressOf();
+
bool
TypeIsPointerType ();
+
+ lldb::SBTarget
+ GetTarget();
+ lldb::SBProcess
+ GetProcess();
+
+ lldb::SBThread
+ GetThread();
+
+ lldb::SBFrame
+ GetFrame();
+
bool
GetDescription (lldb::SBStream &description);