1 //===-- SBVariablesOptions.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/API/SBVariablesOptions.h" 12 #include "lldb/API/SBTarget.h" 13 #include "lldb/Target/Target.h" 14 15 #include "lldb/lldb-private.h" 16 17 using namespace lldb; 18 using namespace lldb_private; 19 20 class VariablesOptionsImpl { 21 public: VariablesOptionsImpl()22 VariablesOptionsImpl() 23 : m_include_arguments(false), m_include_locals(false), 24 m_include_statics(false), m_in_scope_only(false), 25 m_include_runtime_support_values(false), 26 m_include_recognized_arguments(eLazyBoolCalculate), 27 m_use_dynamic(lldb::eNoDynamicValues) {} 28 29 VariablesOptionsImpl(const VariablesOptionsImpl &) = default; 30 31 ~VariablesOptionsImpl() = default; 32 33 VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default; 34 GetIncludeArguments() const35 bool GetIncludeArguments() const { return m_include_arguments; } 36 SetIncludeArguments(bool b)37 void SetIncludeArguments(bool b) { m_include_arguments = b; } 38 GetIncludeRecognizedArguments(const lldb::TargetSP & target_sp) const39 bool GetIncludeRecognizedArguments(const lldb::TargetSP &target_sp) const { 40 if (m_include_recognized_arguments != eLazyBoolCalculate) 41 return m_include_recognized_arguments; 42 return target_sp ? target_sp->GetDisplayRecognizedArguments() : false; 43 } 44 SetIncludeRecognizedArguments(bool b)45 void SetIncludeRecognizedArguments(bool b) { 46 m_include_recognized_arguments = b ? eLazyBoolYes : eLazyBoolNo; 47 } 48 GetIncludeLocals() const49 bool GetIncludeLocals() const { return m_include_locals; } 50 SetIncludeLocals(bool b)51 void SetIncludeLocals(bool b) { m_include_locals = b; } 52 GetIncludeStatics() const53 bool GetIncludeStatics() const { return m_include_statics; } 54 SetIncludeStatics(bool b)55 void SetIncludeStatics(bool b) { m_include_statics = b; } 56 GetInScopeOnly() const57 bool GetInScopeOnly() const { return m_in_scope_only; } 58 SetInScopeOnly(bool b)59 void SetInScopeOnly(bool b) { m_in_scope_only = b; } 60 GetIncludeRuntimeSupportValues() const61 bool GetIncludeRuntimeSupportValues() const { 62 return m_include_runtime_support_values; 63 } 64 SetIncludeRuntimeSupportValues(bool b)65 void SetIncludeRuntimeSupportValues(bool b) { 66 m_include_runtime_support_values = b; 67 } 68 GetUseDynamic() const69 lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; } 70 SetUseDynamic(lldb::DynamicValueType d)71 void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; } 72 73 private: 74 bool m_include_arguments : 1; 75 bool m_include_locals : 1; 76 bool m_include_statics : 1; 77 bool m_in_scope_only : 1; 78 bool m_include_runtime_support_values : 1; 79 LazyBool m_include_recognized_arguments; // can be overridden with a setting 80 lldb::DynamicValueType m_use_dynamic; 81 }; 82 SBVariablesOptions()83SBVariablesOptions::SBVariablesOptions() 84 : m_opaque_ap(new VariablesOptionsImpl()) {} 85 SBVariablesOptions(const SBVariablesOptions & options)86SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options) 87 : m_opaque_ap(new VariablesOptionsImpl(options.ref())) {} 88 89 SBVariablesOptions &SBVariablesOptions:: operator =(const SBVariablesOptions & options)90operator=(const SBVariablesOptions &options) { 91 m_opaque_ap.reset(new VariablesOptionsImpl(options.ref())); 92 return *this; 93 } 94 95 SBVariablesOptions::~SBVariablesOptions() = default; 96 IsValid() const97bool SBVariablesOptions::IsValid() const { return m_opaque_ap != nullptr; } 98 GetIncludeArguments() const99bool SBVariablesOptions::GetIncludeArguments() const { 100 return m_opaque_ap->GetIncludeArguments(); 101 } 102 SetIncludeArguments(bool arguments)103void SBVariablesOptions::SetIncludeArguments(bool arguments) { 104 m_opaque_ap->SetIncludeArguments(arguments); 105 } 106 GetIncludeRecognizedArguments(const lldb::SBTarget & target) const107bool SBVariablesOptions::GetIncludeRecognizedArguments( 108 const lldb::SBTarget &target) const { 109 return m_opaque_ap->GetIncludeRecognizedArguments(target.GetSP()); 110 } 111 SetIncludeRecognizedArguments(bool arguments)112void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) { 113 m_opaque_ap->SetIncludeRecognizedArguments(arguments); 114 } 115 GetIncludeLocals() const116bool SBVariablesOptions::GetIncludeLocals() const { 117 return m_opaque_ap->GetIncludeLocals(); 118 } 119 SetIncludeLocals(bool locals)120void SBVariablesOptions::SetIncludeLocals(bool locals) { 121 m_opaque_ap->SetIncludeLocals(locals); 122 } 123 GetIncludeStatics() const124bool SBVariablesOptions::GetIncludeStatics() const { 125 return m_opaque_ap->GetIncludeStatics(); 126 } 127 SetIncludeStatics(bool statics)128void SBVariablesOptions::SetIncludeStatics(bool statics) { 129 m_opaque_ap->SetIncludeStatics(statics); 130 } 131 GetInScopeOnly() const132bool SBVariablesOptions::GetInScopeOnly() const { 133 return m_opaque_ap->GetInScopeOnly(); 134 } 135 SetInScopeOnly(bool in_scope_only)136void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) { 137 m_opaque_ap->SetInScopeOnly(in_scope_only); 138 } 139 GetIncludeRuntimeSupportValues() const140bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const { 141 return m_opaque_ap->GetIncludeRuntimeSupportValues(); 142 } 143 SetIncludeRuntimeSupportValues(bool runtime_support_values)144void SBVariablesOptions::SetIncludeRuntimeSupportValues( 145 bool runtime_support_values) { 146 m_opaque_ap->SetIncludeRuntimeSupportValues(runtime_support_values); 147 } 148 GetUseDynamic() const149lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const { 150 return m_opaque_ap->GetUseDynamic(); 151 } 152 SetUseDynamic(lldb::DynamicValueType dynamic)153void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) { 154 m_opaque_ap->SetUseDynamic(dynamic); 155 } 156 operator ->()157VariablesOptionsImpl *SBVariablesOptions::operator->() { 158 return m_opaque_ap.operator->(); 159 } 160 operator ->() const161const VariablesOptionsImpl *SBVariablesOptions::operator->() const { 162 return m_opaque_ap.operator->(); 163 } 164 get()165VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_ap.get(); } 166 ref()167VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_ap; } 168 ref() const169const VariablesOptionsImpl &SBVariablesOptions::ref() const { 170 return *m_opaque_ap; 171 } 172 SBVariablesOptions(VariablesOptionsImpl * lldb_object_ptr)173SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr) 174 : m_opaque_ap(std::move(lldb_object_ptr)) {} 175 SetOptions(VariablesOptionsImpl * lldb_object_ptr)176void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) { 177 m_opaque_ap.reset(std::move(lldb_object_ptr)); 178 } 179