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 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/Core/ValueObject.h" 18 19 using namespace lldb; 20 using namespace lldb_private; 21 22 DumpValueObjectOptions::DumpValueObjectOptions() 23 : m_summary_sp(), m_root_valobj_name(), 24 m_max_ptr_depth(PointerDepth{PointerDepth::Mode::Default, 0}), 25 m_decl_printing_helper(), m_use_synthetic(true), 26 m_scope_already_checked(false), m_flat_output(false), m_ignore_cap(false), 27 m_show_types(false), m_show_location(false), m_use_objc(false), 28 m_hide_root_type(false), m_hide_name(false), m_hide_value(false), 29 m_run_validator(false), m_use_type_display_name(true), 30 m_allow_oneliner_mode(true), m_hide_pointer_value(false), 31 m_reveal_empty_aggregates(true) {} 32 33 DumpValueObjectOptions::DumpValueObjectOptions(ValueObject &valobj) 34 : DumpValueObjectOptions() { 35 m_use_dynamic = valobj.GetDynamicValueType(); 36 m_use_synthetic = valobj.IsSynthetic(); 37 m_varformat_language = valobj.GetPreferredDisplayLanguage(); 38 } 39 40 DumpValueObjectOptions & 41 DumpValueObjectOptions::SetMaximumPointerDepth(PointerDepth depth) { 42 m_max_ptr_depth = depth; 43 return *this; 44 } 45 46 DumpValueObjectOptions & 47 DumpValueObjectOptions::SetMaximumDepth(uint32_t depth) { 48 m_max_depth = depth; 49 return *this; 50 } 51 52 DumpValueObjectOptions & 53 DumpValueObjectOptions::SetDeclPrintingHelper(DeclPrintingHelper helper) { 54 m_decl_printing_helper = helper; 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 == false) 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 &DumpValueObjectOptions::SetHideName(bool hide_name) { 152 m_hide_name = hide_name; 153 return *this; 154 } 155 156 DumpValueObjectOptions &DumpValueObjectOptions::SetHideValue(bool hide_value) { 157 m_hide_value = hide_value; 158 return *this; 159 } 160 161 DumpValueObjectOptions &DumpValueObjectOptions::SetHidePointerValue(bool hide) { 162 m_hide_pointer_value = hide; 163 return *this; 164 } 165 166 DumpValueObjectOptions & 167 DumpValueObjectOptions::SetVariableFormatDisplayLanguage( 168 lldb::LanguageType lang) { 169 m_varformat_language = lang; 170 return *this; 171 } 172 173 DumpValueObjectOptions &DumpValueObjectOptions::SetRunValidator(bool run) { 174 m_run_validator = run; 175 return *this; 176 } 177 178 DumpValueObjectOptions & 179 DumpValueObjectOptions::SetUseTypeDisplayName(bool dis) { 180 m_use_type_display_name = dis; 181 return *this; 182 } 183 184 DumpValueObjectOptions & 185 DumpValueObjectOptions::SetAllowOnelinerMode(bool oneliner) { 186 m_allow_oneliner_mode = oneliner; 187 return *this; 188 } 189 190 DumpValueObjectOptions & 191 DumpValueObjectOptions::SetRevealEmptyAggregates(bool reveal) { 192 m_reveal_empty_aggregates = reveal; 193 return *this; 194 } 195 196 DumpValueObjectOptions & 197 DumpValueObjectOptions::SetElementCount(uint32_t element_count) { 198 m_element_count = element_count; 199 return *this; 200 } 201