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