1 //===-- DumpValueObjectOptions.cpp -----------------------------------*- C++
2 //-*-===//
3 //
4 // The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10
11 #include "lldb/DataFormatters/DumpValueObjectOptions.h"
12
13 #include "lldb/Core/ValueObject.h"
14
15 using namespace lldb;
16 using namespace lldb_private;
17
DumpValueObjectOptions()18 DumpValueObjectOptions::DumpValueObjectOptions()
19 : m_summary_sp(), m_root_valobj_name(),
20 m_max_ptr_depth(PointerDepth{PointerDepth::Mode::Default, 0}),
21 m_decl_printing_helper(), m_pointer_as_array(), m_use_synthetic(true),
22 m_scope_already_checked(false), m_flat_output(false), m_ignore_cap(false),
23 m_show_types(false), m_show_location(false), m_use_objc(false),
24 m_hide_root_type(false), m_hide_name(false), m_hide_value(false),
25 m_run_validator(false), m_use_type_display_name(true),
26 m_allow_oneliner_mode(true), m_hide_pointer_value(false),
27 m_reveal_empty_aggregates(true) {}
28
DumpValueObjectOptions(ValueObject & valobj)29 DumpValueObjectOptions::DumpValueObjectOptions(ValueObject &valobj)
30 : DumpValueObjectOptions() {
31 m_use_dynamic = valobj.GetDynamicValueType();
32 m_use_synthetic = valobj.IsSynthetic();
33 m_varformat_language = valobj.GetPreferredDisplayLanguage();
34 }
35
36 DumpValueObjectOptions &
SetMaximumPointerDepth(PointerDepth depth)37 DumpValueObjectOptions::SetMaximumPointerDepth(PointerDepth depth) {
38 m_max_ptr_depth = depth;
39 return *this;
40 }
41
42 DumpValueObjectOptions &
SetMaximumDepth(uint32_t depth)43 DumpValueObjectOptions::SetMaximumDepth(uint32_t depth) {
44 m_max_depth = depth;
45 return *this;
46 }
47
48 DumpValueObjectOptions &
SetDeclPrintingHelper(DeclPrintingHelper helper)49 DumpValueObjectOptions::SetDeclPrintingHelper(DeclPrintingHelper helper) {
50 m_decl_printing_helper = helper;
51 return *this;
52 }
53
SetShowTypes(bool show)54 DumpValueObjectOptions &DumpValueObjectOptions::SetShowTypes(bool show) {
55 m_show_types = show;
56 return *this;
57 }
58
SetShowLocation(bool show)59 DumpValueObjectOptions &DumpValueObjectOptions::SetShowLocation(bool show) {
60 m_show_location = show;
61 return *this;
62 }
63
SetUseObjectiveC(bool use)64 DumpValueObjectOptions &DumpValueObjectOptions::SetUseObjectiveC(bool use) {
65 m_use_objc = use;
66 return *this;
67 }
68
SetShowSummary(bool show)69 DumpValueObjectOptions &DumpValueObjectOptions::SetShowSummary(bool show) {
70 if (!show)
71 SetOmitSummaryDepth(UINT32_MAX);
72 else
73 SetOmitSummaryDepth(0);
74 return *this;
75 }
76
77 DumpValueObjectOptions &
SetUseDynamicType(lldb::DynamicValueType dyn)78 DumpValueObjectOptions::SetUseDynamicType(lldb::DynamicValueType dyn) {
79 m_use_dynamic = dyn;
80 return *this;
81 }
82
83 DumpValueObjectOptions &
SetUseSyntheticValue(bool use_synthetic)84 DumpValueObjectOptions::SetUseSyntheticValue(bool use_synthetic) {
85 m_use_synthetic = use_synthetic;
86 return *this;
87 }
88
SetScopeChecked(bool check)89 DumpValueObjectOptions &DumpValueObjectOptions::SetScopeChecked(bool check) {
90 m_scope_already_checked = check;
91 return *this;
92 }
93
SetFlatOutput(bool flat)94 DumpValueObjectOptions &DumpValueObjectOptions::SetFlatOutput(bool flat) {
95 m_flat_output = flat;
96 return *this;
97 }
98
99 DumpValueObjectOptions &
SetOmitSummaryDepth(uint32_t depth)100 DumpValueObjectOptions::SetOmitSummaryDepth(uint32_t depth) {
101 m_omit_summary_depth = depth;
102 return *this;
103 }
104
SetIgnoreCap(bool ignore)105 DumpValueObjectOptions &DumpValueObjectOptions::SetIgnoreCap(bool ignore) {
106 m_ignore_cap = ignore;
107 return *this;
108 }
109
SetRawDisplay()110 DumpValueObjectOptions &DumpValueObjectOptions::SetRawDisplay() {
111 SetUseSyntheticValue(false);
112 SetOmitSummaryDepth(UINT32_MAX);
113 SetIgnoreCap(true);
114 SetHideName(false);
115 SetHideValue(false);
116 SetUseTypeDisplayName(false);
117 SetAllowOnelinerMode(false);
118 return *this;
119 }
120
SetFormat(lldb::Format format)121 DumpValueObjectOptions &DumpValueObjectOptions::SetFormat(lldb::Format format) {
122 m_format = format;
123 return *this;
124 }
125
126 DumpValueObjectOptions &
SetSummary(lldb::TypeSummaryImplSP summary)127 DumpValueObjectOptions::SetSummary(lldb::TypeSummaryImplSP summary) {
128 m_summary_sp = summary;
129 return *this;
130 }
131
132 DumpValueObjectOptions &
SetRootValueObjectName(const char * name)133 DumpValueObjectOptions::SetRootValueObjectName(const char *name) {
134 if (name)
135 m_root_valobj_name.assign(name);
136 else
137 m_root_valobj_name.clear();
138 return *this;
139 }
140
141 DumpValueObjectOptions &
SetHideRootType(bool hide_root_type)142 DumpValueObjectOptions::SetHideRootType(bool hide_root_type) {
143 m_hide_root_type = hide_root_type;
144 return *this;
145 }
146
SetHideName(bool hide_name)147 DumpValueObjectOptions &DumpValueObjectOptions::SetHideName(bool hide_name) {
148 m_hide_name = hide_name;
149 return *this;
150 }
151
SetHideValue(bool hide_value)152 DumpValueObjectOptions &DumpValueObjectOptions::SetHideValue(bool hide_value) {
153 m_hide_value = hide_value;
154 return *this;
155 }
156
SetHidePointerValue(bool hide)157 DumpValueObjectOptions &DumpValueObjectOptions::SetHidePointerValue(bool hide) {
158 m_hide_pointer_value = hide;
159 return *this;
160 }
161
162 DumpValueObjectOptions &
SetVariableFormatDisplayLanguage(lldb::LanguageType lang)163 DumpValueObjectOptions::SetVariableFormatDisplayLanguage(
164 lldb::LanguageType lang) {
165 m_varformat_language = lang;
166 return *this;
167 }
168
SetRunValidator(bool run)169 DumpValueObjectOptions &DumpValueObjectOptions::SetRunValidator(bool run) {
170 m_run_validator = run;
171 return *this;
172 }
173
174 DumpValueObjectOptions &
SetUseTypeDisplayName(bool dis)175 DumpValueObjectOptions::SetUseTypeDisplayName(bool dis) {
176 m_use_type_display_name = dis;
177 return *this;
178 }
179
180 DumpValueObjectOptions &
SetAllowOnelinerMode(bool oneliner)181 DumpValueObjectOptions::SetAllowOnelinerMode(bool oneliner) {
182 m_allow_oneliner_mode = oneliner;
183 return *this;
184 }
185
186 DumpValueObjectOptions &
SetRevealEmptyAggregates(bool reveal)187 DumpValueObjectOptions::SetRevealEmptyAggregates(bool reveal) {
188 m_reveal_empty_aggregates = reveal;
189 return *this;
190 }
191
192 DumpValueObjectOptions &
SetElementCount(uint32_t element_count)193 DumpValueObjectOptions::SetElementCount(uint32_t element_count) {
194 m_pointer_as_array = PointerAsArraySettings(element_count);
195 return *this;
196 }
197
SetPointerAsArray(const PointerAsArraySettings & ptr_array)198 DumpValueObjectOptions &DumpValueObjectOptions::SetPointerAsArray(
199 const PointerAsArraySettings &ptr_array) {
200 m_pointer_as_array = ptr_array;
201 return *this;
202 }
203