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/source/API/SBModule.cpp b/source/API/SBModule.cpp
index 852952a..faeb5e9 100644
--- a/source/API/SBModule.cpp
+++ b/source/API/SBModule.cpp
@@ -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 @@
     
     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;
+}
\ No newline at end of file