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/scripts/Python | |
parent | ce0ceebb1c5f896e992e1cac36fad732daf55cb0 (diff) | |
download | bcm5719-llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.tar.gz bcm5719-llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.zip |
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/scripts/Python')
-rw-r--r-- | lldb/scripts/Python/interface/SBModule.i | 7 | ||||
-rw-r--r-- | lldb/scripts/Python/interface/SBTarget.i | 6 | ||||
-rw-r--r-- | lldb/scripts/Python/interface/SBType.i | 142 | ||||
-rw-r--r-- | lldb/scripts/Python/interface/SBValue.i | 31 |
4 files changed, 100 insertions, 86 deletions
diff --git a/lldb/scripts/Python/interface/SBModule.i b/lldb/scripts/Python/interface/SBModule.i index cea05e7ce9d..6f78dff68df 100644 --- a/lldb/scripts/Python/interface/SBModule.i +++ b/lldb/scripts/Python/interface/SBModule.i @@ -137,6 +137,13 @@ public: 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/lldb/scripts/Python/interface/SBTarget.i b/lldb/scripts/Python/interface/SBTarget.i index 3ad6bed704a..40646209be5 100644 --- a/lldb/scripts/Python/interface/SBTarget.i +++ b/lldb/scripts/Python/interface/SBTarget.i @@ -320,6 +320,12 @@ public: 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/lldb/scripts/Python/interface/SBType.i b/lldb/scripts/Python/interface/SBType.i index e7d57b4fe76..03cfe44906d 100644 --- a/lldb/scripts/Python/interface/SBType.i +++ b/lldb/scripts/Python/interface/SBType.i @@ -9,91 +9,63 @@ namespace lldb { -class SBTypeMember; - -class SBType -{ -public: - - SBType (void *ast = NULL, void *clang_type = NULL); - - 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 (); + 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(); + }; - 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/lldb/scripts/Python/interface/SBValue.i b/lldb/scripts/Python/interface/SBValue.i index 68e97e3323e..24f966099c3 100644 --- a/lldb/scripts/Python/interface/SBValue.i +++ b/lldb/scripts/Python/interface/SBValue.i @@ -203,7 +203,22 @@ public: 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 @@ public: 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); |