1 //===-- FormattersHelpers.cpp -------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // C Includes 11 12 // C++ Includes 13 14 // Other libraries and framework includes 15 16 // Project includes 17 #include "lldb/DataFormatters/FormattersHelpers.h" 18 19 #include "lldb/Core/ConstString.h" 20 #include "lldb/Core/RegularExpression.h" 21 22 using namespace lldb; 23 using namespace lldb_private; 24 using namespace lldb_private::formatters; 25 26 void 27 lldb_private::formatters::AddFormat (TypeCategoryImpl::SharedPointer category_sp, 28 lldb::Format format, 29 ConstString type_name, 30 TypeFormatImpl::Flags flags, 31 bool regex) 32 { 33 lldb::TypeFormatImplSP format_sp(new TypeFormatImpl_Format(format, flags)); 34 35 if (regex) 36 category_sp->GetRegexTypeFormatsContainer()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),format_sp); 37 else 38 category_sp->GetTypeFormatsContainer()->Add(type_name, format_sp); 39 } 40 41 42 void 43 lldb_private::formatters::AddStringSummary(TypeCategoryImpl::SharedPointer category_sp, 44 const char* string, 45 ConstString type_name, 46 TypeSummaryImpl::Flags flags, 47 bool regex) 48 { 49 lldb::TypeSummaryImplSP summary_sp(new StringSummaryFormat(flags, 50 string)); 51 52 if (regex) 53 category_sp->GetRegexTypeSummariesContainer()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp); 54 else 55 category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); 56 } 57 58 void 59 lldb_private::formatters::AddOneLineSummary (TypeCategoryImpl::SharedPointer category_sp, 60 ConstString type_name, 61 TypeSummaryImpl::Flags flags, 62 bool regex) 63 { 64 flags.SetShowMembersOneLiner(true); 65 lldb::TypeSummaryImplSP summary_sp(new StringSummaryFormat(flags, "")); 66 67 if (regex) 68 category_sp->GetRegexTypeSummariesContainer()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp); 69 else 70 category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); 71 } 72 73 #ifndef LLDB_DISABLE_PYTHON 74 void 75 lldb_private::formatters::AddCXXSummary (TypeCategoryImpl::SharedPointer category_sp, 76 CXXFunctionSummaryFormat::Callback funct, 77 const char* description, 78 ConstString type_name, 79 TypeSummaryImpl::Flags flags, 80 bool regex) 81 { 82 lldb::TypeSummaryImplSP summary_sp(new CXXFunctionSummaryFormat(flags,funct,description)); 83 if (regex) 84 category_sp->GetRegexTypeSummariesContainer()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())),summary_sp); 85 else 86 category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); 87 } 88 89 void 90 lldb_private::formatters::AddCXXSynthetic (TypeCategoryImpl::SharedPointer category_sp, 91 CXXSyntheticChildren::CreateFrontEndCallback generator, 92 const char* description, 93 ConstString type_name, 94 ScriptedSyntheticChildren::Flags flags, 95 bool regex) 96 { 97 lldb::SyntheticChildrenSP synth_sp(new CXXSyntheticChildren(flags,description,generator)); 98 if (regex) 99 category_sp->GetRegexTypeSyntheticsContainer()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())), synth_sp); 100 else 101 category_sp->GetTypeSyntheticsContainer()->Add(type_name,synth_sp); 102 } 103 104 void 105 lldb_private::formatters::AddFilter (TypeCategoryImpl::SharedPointer category_sp, 106 std::vector<std::string> children, 107 const char* description, 108 ConstString type_name, 109 ScriptedSyntheticChildren::Flags flags, 110 bool regex) 111 { 112 TypeFilterImplSP filter_sp(new TypeFilterImpl(flags)); 113 for (auto child : children) 114 filter_sp->AddExpressionPath(child); 115 if (regex) 116 category_sp->GetRegexTypeFiltersContainer()->Add(RegularExpressionSP(new RegularExpression(type_name.AsCString())), filter_sp); 117 else 118 category_sp->GetTypeFiltersContainer()->Add(type_name,filter_sp); 119 } 120 #endif 121