HardcodedFormatters::HardcodedSummaryFinder GoLanguage::GetHardcodedSummaries() { static std::once_flag g_initialize; static HardcodedFormatters::HardcodedSummaryFinder g_formatters; std::call_once(g_initialize, []() -> void { g_formatters.push_back( [](lldb_private::ValueObject &valobj, lldb::DynamicValueType, FormatManager &) -> TypeSummaryImpl::SharedPointer { static CXXFunctionSummaryFormat::SharedPointer formatter_sp( new CXXFunctionSummaryFormat( TypeSummaryImpl::Flags().SetDontShowChildren(true), lldb_private::formatters::GoStringSummaryProvider, "Go string summary provider")); if (GoASTContext::IsGoString(valobj.GetCompilerType())) { return formatter_sp; } if (GoASTContext::IsGoString( valobj.GetCompilerType().GetPointeeType())) { return formatter_sp; } return nullptr; }); g_formatters.push_back( [](lldb_private::ValueObject &valobj, lldb::DynamicValueType, FormatManager &) -> TypeSummaryImpl::SharedPointer { static lldb::TypeSummaryImplSP formatter_sp(new StringSummaryFormat( TypeSummaryImpl::Flags().SetHideItemNames(true), "(len ${var.len}, cap ${var.cap})")); if (GoASTContext::IsGoSlice(valobj.GetCompilerType())) { return formatter_sp; } if (GoASTContext::IsGoSlice( valobj.GetCompilerType().GetPointeeType())) { return formatter_sp; } return nullptr; }); }); return g_formatters; }
HardcodedFormatters::HardcodedSummaryFinder CPlusPlusLanguage::GetHardcodedSummaries() { static std::once_flag g_initialize; static ConstString g_vectortypes("VectorTypes"); static HardcodedFormatters::HardcodedSummaryFinder g_formatters; std::call_once(g_initialize, []() -> void { g_formatters.push_back( [](lldb_private::ValueObject &valobj, lldb::DynamicValueType, FormatManager &) -> TypeSummaryImpl::SharedPointer { static CXXFunctionSummaryFormat::SharedPointer formatter_sp( new CXXFunctionSummaryFormat( TypeSummaryImpl::Flags(), lldb_private::formatters::CXXFunctionPointerSummaryProvider, "Function pointer summary provider")); if (valobj.GetCompilerType().IsFunctionPointerType()) { return formatter_sp; } return nullptr; }); g_formatters.push_back( [](lldb_private::ValueObject &valobj, lldb::DynamicValueType, FormatManager &fmt_mgr) -> TypeSummaryImpl::SharedPointer { static CXXFunctionSummaryFormat::SharedPointer formatter_sp( new CXXFunctionSummaryFormat( TypeSummaryImpl::Flags() .SetCascades(true) .SetDontShowChildren(true) .SetHideItemNames(true) .SetShowMembersOneLiner(true) .SetSkipPointers(true) .SetSkipReferences(false), lldb_private::formatters::VectorTypeSummaryProvider, "vector_type pointer summary provider")); if (valobj.GetCompilerType().IsVectorType(nullptr, nullptr)) { if (fmt_mgr.GetCategory(g_vectortypes)->IsEnabled()) return formatter_sp; } return nullptr; }); g_formatters.push_back( [](lldb_private::ValueObject &valobj, lldb::DynamicValueType, FormatManager &fmt_mgr) -> TypeSummaryImpl::SharedPointer { static CXXFunctionSummaryFormat::SharedPointer formatter_sp( new CXXFunctionSummaryFormat( TypeSummaryImpl::Flags() .SetCascades(true) .SetDontShowChildren(true) .SetHideItemNames(true) .SetShowMembersOneLiner(true) .SetSkipPointers(true) .SetSkipReferences(false), lldb_private::formatters::BlockPointerSummaryProvider, "block pointer summary provider")); if (valobj.GetCompilerType().IsBlockPointerType(nullptr)) { return formatter_sp; } return nullptr; }); }); return g_formatters; }