blob: cbded9da9634bbda4aacfff12747f9012602ab06 [file] [log] [blame]
Enrico Granatadf7e79e2015-09-02 01:21:31 +00001//===-- 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
22using namespace lldb;
23using namespace lldb_private;
24using namespace lldb_private::formatters;
25
26void
27lldb_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
42void
43lldb_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
58void
59lldb_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
74void
75lldb_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
89void
90lldb_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
104void
105lldb_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