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