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) { 42 m_max_depth = depth; 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 &DumpValueObjectOptions::SetShowTypes(bool show) { 53 m_show_types = show; 54 return *this; 55 } 56 57 DumpValueObjectOptions &DumpValueObjectOptions::SetShowLocation(bool show) { 58 m_show_location = show; 59 return *this; 60 } 61 62 DumpValueObjectOptions &DumpValueObjectOptions::SetUseObjectiveC(bool use) { 63 m_use_objc = use; 64 return *this; 65 } 66 67 DumpValueObjectOptions &DumpValueObjectOptions::SetShowSummary(bool show) { 68 if (!show) 69 SetOmitSummaryDepth(UINT32_MAX); 70 else 71 SetOmitSummaryDepth(0); 72 return *this; 73 } 74 75 DumpValueObjectOptions & 76 DumpValueObjectOptions::SetUseDynamicType(lldb::DynamicValueType dyn) { 77 m_use_dynamic = dyn; 78 return *this; 79 } 80 81 DumpValueObjectOptions & 82 DumpValueObjectOptions::SetUseSyntheticValue(bool use_synthetic) { 83 m_use_synthetic = use_synthetic; 84 return *this; 85 } 86 87 DumpValueObjectOptions &DumpValueObjectOptions::SetScopeChecked(bool check) { 88 m_scope_already_checked = check; 89 return *this; 90 } 91 92 DumpValueObjectOptions &DumpValueObjectOptions::SetFlatOutput(bool flat) { 93 m_flat_output = flat; 94 return *this; 95 } 96 97 DumpValueObjectOptions & 98 DumpValueObjectOptions::SetOmitSummaryDepth(uint32_t depth) { 99 m_omit_summary_depth = depth; 100 return *this; 101 } 102 103 DumpValueObjectOptions &DumpValueObjectOptions::SetIgnoreCap(bool ignore) { 104 m_ignore_cap = ignore; 105 return *this; 106 } 107 108 DumpValueObjectOptions &DumpValueObjectOptions::SetRawDisplay() { 109 SetUseSyntheticValue(false); 110 SetOmitSummaryDepth(UINT32_MAX); 111 SetIgnoreCap(true); 112 SetHideName(false); 113 SetHideValue(false); 114 SetUseTypeDisplayName(false); 115 SetAllowOnelinerMode(false); 116 return *this; 117 } 118 119 DumpValueObjectOptions &DumpValueObjectOptions::SetFormat(lldb::Format format) { 120 m_format = format; 121 return *this; 122 } 123 124 DumpValueObjectOptions & 125 DumpValueObjectOptions::SetSummary(lldb::TypeSummaryImplSP summary) { 126 m_summary_sp = summary; 127 return *this; 128 } 129 130 DumpValueObjectOptions & 131 DumpValueObjectOptions::SetRootValueObjectName(const char *name) { 132 if (name) 133 m_root_valobj_name.assign(name); 134 else 135 m_root_valobj_name.clear(); 136 return *this; 137 } 138 139 DumpValueObjectOptions & 140 DumpValueObjectOptions::SetHideRootType(bool hide_root_type) { 141 m_hide_root_type = hide_root_type; 142 return *this; 143 } 144 145 DumpValueObjectOptions &DumpValueObjectOptions::SetHideName(bool hide_name) { 146 m_hide_name = hide_name; 147 return *this; 148 } 149 150 DumpValueObjectOptions &DumpValueObjectOptions::SetHideValue(bool hide_value) { 151 m_hide_value = hide_value; 152 return *this; 153 } 154 155 DumpValueObjectOptions &DumpValueObjectOptions::SetHidePointerValue(bool hide) { 156 m_hide_pointer_value = hide; 157 return *this; 158 } 159 160 DumpValueObjectOptions & 161 DumpValueObjectOptions::SetVariableFormatDisplayLanguage( 162 lldb::LanguageType lang) { 163 m_varformat_language = lang; 164 return *this; 165 } 166 167 DumpValueObjectOptions &DumpValueObjectOptions::SetRunValidator(bool run) { 168 m_run_validator = run; 169 return *this; 170 } 171 172 DumpValueObjectOptions & 173 DumpValueObjectOptions::SetUseTypeDisplayName(bool dis) { 174 m_use_type_display_name = dis; 175 return *this; 176 } 177 178 DumpValueObjectOptions & 179 DumpValueObjectOptions::SetAllowOnelinerMode(bool oneliner) { 180 m_allow_oneliner_mode = oneliner; 181 return *this; 182 } 183 184 DumpValueObjectOptions & 185 DumpValueObjectOptions::SetRevealEmptyAggregates(bool reveal) { 186 m_reveal_empty_aggregates = reveal; 187 return *this; 188 } 189 190 DumpValueObjectOptions & 191 DumpValueObjectOptions::SetElementCount(uint32_t element_count) { 192 m_pointer_as_array = PointerAsArraySettings(element_count); 193 return *this; 194 } 195 196 DumpValueObjectOptions &DumpValueObjectOptions::SetPointerAsArray( 197 const PointerAsArraySettings &ptr_array) { 198 m_pointer_as_array = ptr_array; 199 return *this; 200 } 201