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