@@ -1409,7 +1409,7 @@ static void LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1409
1409
stl_synth_flags,
1410
1410
" lldb.formatters.cpp.gnu_libstdcpp.StdVectorSynthProvider" )));
1411
1411
cpp_category_sp->AddTypeSynthetic (
1412
- " ^std::( __debug::)? map<.+> >(( )?&)?$" , eFormatterMatchRegex,
1412
+ " ^std::__debug::map<.+> >(( )?&)?$" , eFormatterMatchRegex,
1413
1413
SyntheticChildrenSP (new ScriptedSyntheticChildren (
1414
1414
stl_synth_flags,
1415
1415
" lldb.formatters.cpp.gnu_libstdcpp.StdMapLikeSynthProvider" )));
@@ -1419,17 +1419,17 @@ static void LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1419
1419
stl_deref_flags,
1420
1420
" lldb.formatters.cpp.gnu_libstdcpp.StdDequeSynthProvider" )));
1421
1421
cpp_category_sp->AddTypeSynthetic (
1422
- " ^std::( __debug::)? set<.+> >(( )?&)?$" , eFormatterMatchRegex,
1422
+ " ^std::__debug::set<.+> >(( )?&)?$" , eFormatterMatchRegex,
1423
1423
SyntheticChildrenSP (new ScriptedSyntheticChildren (
1424
1424
stl_deref_flags,
1425
1425
" lldb.formatters.cpp.gnu_libstdcpp.StdMapLikeSynthProvider" )));
1426
1426
cpp_category_sp->AddTypeSynthetic (
1427
- " ^std::( __debug::)? multimap<.+> >(( )?&)?$" , eFormatterMatchRegex,
1427
+ " ^std::__debug::multimap<.+> >(( )?&)?$" , eFormatterMatchRegex,
1428
1428
SyntheticChildrenSP (new ScriptedSyntheticChildren (
1429
1429
stl_deref_flags,
1430
1430
" lldb.formatters.cpp.gnu_libstdcpp.StdMapLikeSynthProvider" )));
1431
1431
cpp_category_sp->AddTypeSynthetic (
1432
- " ^std::( __debug::)? multiset<.+> >(( )?&)?$" , eFormatterMatchRegex,
1432
+ " ^std::__debug::multiset<.+> >(( )?&)?$" , eFormatterMatchRegex,
1433
1433
SyntheticChildrenSP (new ScriptedSyntheticChildren (
1434
1434
stl_deref_flags,
1435
1435
" lldb.formatters.cpp.gnu_libstdcpp.StdMapLikeSynthProvider" )));
@@ -1470,15 +1470,15 @@ static void LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1470
1470
" libstdc++ std::vector summary provider" ,
1471
1471
" ^std::(__debug::)?vector<.+>(( )?&)?$" , stl_summary_flags, true );
1472
1472
1473
- AddCXXSummary (
1474
- cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
1475
- " libstdc++ std::map summary provider" ,
1476
- " ^std::( __debug::)? map<.+> >(( )?&)?$" , stl_summary_flags, true );
1473
+ AddCXXSummary (cpp_category_sp,
1474
+ lldb_private::formatters::ContainerSizeSummaryProvider,
1475
+ " libstdc++ std::map summary provider" ,
1476
+ " ^std::__debug::map<.+> >(( )?&)?$" , stl_summary_flags, true );
1477
1477
1478
- AddCXXSummary (
1479
- cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
1480
- " libstdc++ std::set summary provider" ,
1481
- " ^std::( __debug::)? set<.+> >(( )?&)?$" , stl_summary_flags, true );
1478
+ AddCXXSummary (cpp_category_sp,
1479
+ lldb_private::formatters::ContainerSizeSummaryProvider,
1480
+ " libstdc++ std::set summary provider" ,
1481
+ " ^std::__debug::set<.+> >(( )?&)?$" , stl_summary_flags, true );
1482
1482
1483
1483
AddCXXSummary (
1484
1484
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
@@ -1488,12 +1488,12 @@ static void LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1488
1488
AddCXXSummary (
1489
1489
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
1490
1490
" libstdc++ std::multimap summary provider" ,
1491
- " ^std::( __debug::)? multimap<.+> >(( )?&)?$" , stl_summary_flags, true );
1491
+ " ^std::__debug::multimap<.+> >(( )?&)?$" , stl_summary_flags, true );
1492
1492
1493
1493
AddCXXSummary (
1494
1494
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
1495
1495
" libstdc++ std::multiset summary provider" ,
1496
- " ^std::( __debug::)? multiset<.+> >(( )?&)?$" , stl_summary_flags, true );
1496
+ " ^std::__debug::multiset<.+> >(( )?&)?$" , stl_summary_flags, true );
1497
1497
1498
1498
AddCXXSummary (cpp_category_sp,
1499
1499
lldb_private::formatters::ContainerSizeSummaryProvider,
@@ -1599,6 +1599,18 @@ GenericSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream,
1599
1599
return LibStdcppSmartPointerSummaryProvider (valobj, stream, options);
1600
1600
}
1601
1601
1602
+ static lldb_private::SyntheticChildrenFrontEnd *
1603
+ GenericMapLikeSyntheticFrontEndCreator (CXXSyntheticChildren *children,
1604
+ lldb::ValueObjectSP valobj_sp) {
1605
+ if (!valobj_sp)
1606
+ return nullptr ;
1607
+
1608
+ if (IsMsvcStlMapLike (*valobj_sp))
1609
+ return MsvcStlMapLikeSyntheticFrontEndCreator (valobj_sp);
1610
+ return new ScriptedSyntheticChildren::FrontEnd (
1611
+ " lldb.formatters.cpp.gnu_libstdcpp.StdMapLikeSynthProvider" , *valobj_sp);
1612
+ }
1613
+
1602
1614
// / Load formatters that are formatting types from more than one STL
1603
1615
static void LoadCommonStlFormatters (lldb::TypeCategoryImplSP cpp_category_sp) {
1604
1616
if (!cpp_category_sp)
@@ -1642,19 +1654,30 @@ static void LoadCommonStlFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1642
1654
},
1643
1655
" MSVC STL/libstdc++ std::wstring summary provider" ));
1644
1656
1657
+ stl_summary_flags.SetDontShowChildren (false );
1658
+ stl_summary_flags.SetSkipPointers (false );
1659
+
1645
1660
AddCXXSynthetic (cpp_category_sp, GenericSmartPointerSyntheticFrontEndCreator,
1646
1661
" std::shared_ptr synthetic children" ,
1647
1662
" ^std::shared_ptr<.+>(( )?&)?$" , stl_synth_flags, true );
1648
1663
AddCXXSynthetic (cpp_category_sp, GenericSmartPointerSyntheticFrontEndCreator,
1649
1664
" std::weak_ptr synthetic children" ,
1650
1665
" ^std::weak_ptr<.+>(( )?&)?$" , stl_synth_flags, true );
1666
+ AddCXXSynthetic (cpp_category_sp, GenericMapLikeSyntheticFrontEndCreator,
1667
+ " std::(multi)?map/set synthetic children" ,
1668
+ " ^std::(multi)?(map|set)<.+>(( )?&)?$" , stl_synth_flags,
1669
+ true );
1651
1670
1652
1671
AddCXXSummary (cpp_category_sp, GenericSmartPointerSummaryProvider,
1653
1672
" MSVC STL/libstdc++ std::shared_ptr summary provider" ,
1654
1673
" ^std::shared_ptr<.+>(( )?&)?$" , stl_summary_flags, true );
1655
1674
AddCXXSummary (cpp_category_sp, GenericSmartPointerSummaryProvider,
1656
1675
" MSVC STL/libstdc++ std::weak_ptr summary provider" ,
1657
1676
" ^std::weak_ptr<.+>(( )?&)?$" , stl_summary_flags, true );
1677
+ AddCXXSummary (cpp_category_sp, ContainerSizeSummaryProvider,
1678
+ " MSVC STL/libstdc++ std::(multi)?map/set summary provider" ,
1679
+ " ^std::(multi)?(map|set)<.+>(( )?&)?$" , stl_summary_flags,
1680
+ true );
1658
1681
}
1659
1682
1660
1683
static void LoadMsvcStlFormatters (lldb::TypeCategoryImplSP cpp_category_sp) {
@@ -1669,6 +1692,9 @@ static void LoadMsvcStlFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1669
1692
.SetDontShowValue (false )
1670
1693
.SetShowMembersOneLiner (false )
1671
1694
.SetHideItemNames (false );
1695
+ SyntheticChildren::Flags stl_synth_flags;
1696
+ stl_synth_flags.SetCascades (true ).SetSkipPointers (false ).SetSkipReferences (
1697
+ false );
1672
1698
1673
1699
using StringElementType = StringPrinter::StringElementType;
1674
1700
@@ -1690,6 +1716,18 @@ static void LoadMsvcStlFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
1690
1716
stl_summary_flags,
1691
1717
MsvcStlStringSummaryProvider<StringElementType::UTF32>,
1692
1718
" MSVC STL std::u32string summary provider" ));
1719
+
1720
+ stl_summary_flags.SetDontShowChildren (false );
1721
+ stl_summary_flags.SetSkipPointers (false );
1722
+
1723
+ AddCXXSynthetic (cpp_category_sp, MsvcStlTreeIterSyntheticFrontEndCreator,
1724
+ " MSVC STL tree iterator synthetic children" ,
1725
+ " ^std::_Tree(_const)?_iterator<.+>(( )?&)?$" , stl_synth_flags,
1726
+ true );
1727
+ AddCXXSummary (cpp_category_sp, MsvcStlTreeIterSummaryProvider,
1728
+ " MSVC STL tree iterator summary" ,
1729
+ " ^std::_Tree(_const)?_iterator<.+>(( )?&)?$" , stl_summary_flags,
1730
+ true );
1693
1731
}
1694
1732
1695
1733
static void LoadSystemFormatters (lldb::TypeCategoryImplSP cpp_category_sp) {
0 commit comments