Added the ability to get a list of types from a SBModule or SBCompileUnit. Sebastien Metrot wanted this, and sent a hollowed out patch. I filled in the blanks and did the low level implementation. The new functions are:

//------------------------------------------------------------------
/// Get all types matching \a type_mask from debug info in this
/// module.
///
/// @param[in] type_mask
///     A bitfield that consists of one or more bits logically OR'ed
///     together from the lldb::TypeClass enumeration. This allows
///     you to request only structure types, or only class, struct
///     and union types. Passing in lldb::eTypeClassAny will return
///     all types found in the debug information for this module.
///
/// @return
///     A list of types in this module that match \a type_mask
//------------------------------------------------------------------
lldb::SBTypeList
SBModule::GetTypes (uint32_t type_mask)


//------------------------------------------------------------------
/// Get all types matching \a type_mask from debug info in this
/// compile unit.
///
/// @param[in] type_mask
///    A bitfield that consists of one or more bits logically OR'ed
///    together from the lldb::TypeClass enumeration. This allows
///    you to request only structure types, or only class, struct
///    and union types. Passing in lldb::eTypeClassAny will return
///    all types found in the debug information for this compile
///    unit.
///
/// @return
///    A list of types in this compile unit that match \a type_mask
//------------------------------------------------------------------
lldb::SBTypeList
SBCompileUnit::GetTypes (uint32_t type_mask = lldb::eTypeClassAny);

This lets you request types by filling out a mask that contains one or more bits from the lldb::TypeClass enumerations, so you can only get the types you really want.

llvm-svn: 184251
diff --git a/lldb/scripts/Python/interface/SBCompileUnit.i b/lldb/scripts/Python/interface/SBCompileUnit.i
index 3bfaf70..a7e76cb 100644
--- a/lldb/scripts/Python/interface/SBCompileUnit.i
+++ b/lldb/scripts/Python/interface/SBCompileUnit.i
@@ -86,6 +86,26 @@
     uint32_t
     FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full);
 
+    %feature("docstring", "
+     //------------------------------------------------------------------
+     /// Get all types matching \a type_mask from debug info in this
+     /// compile unit.
+     ///
+     /// @param[in] type_mask
+     ///    A bitfield that consists of one or more bits logically OR'ed
+     ///    together from the lldb::TypeClass enumeration. This allows
+     ///    you to request only structure types, or only class, struct
+     ///    and union types. Passing in lldb::eTypeClassAny will return
+     ///    all types found in the debug information for this compile
+     ///    unit.
+     ///
+     /// @return
+     ///    A list of types in this compile unit that match \a type_mask
+     //------------------------------------------------------------------
+     ") GetTypes;
+    lldb::SBTypeList
+    GetTypes (uint32_t type_mask = lldb::eTypeClassAny);
+    
     bool
     GetDescription (lldb::SBStream &description);
     
diff --git a/lldb/scripts/Python/interface/SBModule.i b/lldb/scripts/Python/interface/SBModule.i
index cb970d6..aa2571c 100644
--- a/lldb/scripts/Python/interface/SBModule.i
+++ b/lldb/scripts/Python/interface/SBModule.i
@@ -227,6 +227,25 @@
 
     %feature("docstring", "
     //------------------------------------------------------------------
+    /// Get all types matching \a type_mask from debug info in this
+    /// module.
+    ///
+    /// @param[in] type_mask
+    ///     A bitfield that consists of one or more bits logically OR'ed
+    ///     together from the lldb::TypeClass enumeration. This allows
+    ///     you to request only structure types, or only class, struct
+    ///     and union types. Passing in lldb::eTypeClassAny will return
+    ///     all types found in the debug information for this module.
+    ///
+    /// @return
+    ///     A list of types in this module that match \a type_mask
+    //------------------------------------------------------------------
+    ") GetTypes;
+    lldb::SBTypeList
+    GetTypes (uint32_t type_mask = lldb::eTypeClassAny);
+
+    %feature("docstring", "
+    //------------------------------------------------------------------
     /// Find global and static variables by name.
     ///
     /// @param[in] target