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);