From 6f3533fb1d742620328b4fcc79410d3e09d6eb8d Mon Sep 17 00:00:00 2001 From: Enrico Granata Date: Fri, 29 Jul 2011 19:53:35 +0000 Subject: Public API changes: - Completely new implementation of SBType - Various enhancements in several other classes Python synthetic children providers for std::vector, std::list and std::map: - 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 --- lldb/scripts/Python/interface/SBModule.i | 7 ++ lldb/scripts/Python/interface/SBTarget.i | 6 ++ lldb/scripts/Python/interface/SBType.i | 142 +++++++++++++------------------ lldb/scripts/Python/interface/SBValue.i | 31 ++++++- 4 files changed, 100 insertions(+), 86 deletions(-) (limited to 'lldb/scripts/Python/interface') 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 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); -- cgit v1.2.3