1 //===-- SBVariablesOptions.cpp --------------------------------------*- C++
4 // The LLVM Compiler Infrastructure
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
9 //===----------------------------------------------------------------------===//
11 #include "lldb/API/SBVariablesOptions.h"
12 #include "lldb/API/SBTarget.h"
13 #include "lldb/Target/Target.h"
15 #include "lldb/lldb-private.h"
18 using namespace lldb_private;
20 class 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) {}
29 VariablesOptionsImpl(const VariablesOptionsImpl &) = default;
31 ~VariablesOptionsImpl() = default;
33 VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default;
35 bool GetIncludeArguments() const { return m_include_arguments; }
37 void SetIncludeArguments(bool b) { m_include_arguments = b; }
39 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;
45 void SetIncludeRecognizedArguments(bool b) {
46 m_include_recognized_arguments = b ? eLazyBoolYes : eLazyBoolNo;
49 bool GetIncludeLocals() const { return m_include_locals; }
51 void SetIncludeLocals(bool b) { m_include_locals = b; }
53 bool GetIncludeStatics() const { return m_include_statics; }
55 void SetIncludeStatics(bool b) { m_include_statics = b; }
57 bool GetInScopeOnly() const { return m_in_scope_only; }
59 void SetInScopeOnly(bool b) { m_in_scope_only = b; }
61 bool GetIncludeRuntimeSupportValues() const {
62 return m_include_runtime_support_values;
65 void SetIncludeRuntimeSupportValues(bool b) {
66 m_include_runtime_support_values = b;
69 lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; }
71 void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; }
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;
83 SBVariablesOptions::SBVariablesOptions()
84 : m_opaque_ap(new VariablesOptionsImpl()) {}
86 SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options)
87 : m_opaque_ap(new VariablesOptionsImpl(options.ref())) {}
89 SBVariablesOptions &SBVariablesOptions::
90 operator=(const SBVariablesOptions &options) {
91 m_opaque_ap.reset(new VariablesOptionsImpl(options.ref()));
95 SBVariablesOptions::~SBVariablesOptions() = default;
97 bool SBVariablesOptions::IsValid() const { return m_opaque_ap != nullptr; }
99 bool SBVariablesOptions::GetIncludeArguments() const {
100 return m_opaque_ap->GetIncludeArguments();
103 void SBVariablesOptions::SetIncludeArguments(bool arguments) {
104 m_opaque_ap->SetIncludeArguments(arguments);
107 bool SBVariablesOptions::GetIncludeRecognizedArguments(
108 const lldb::SBTarget &target) const {
109 return m_opaque_ap->GetIncludeRecognizedArguments(target.GetSP());
112 void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) {
113 m_opaque_ap->SetIncludeRecognizedArguments(arguments);
116 bool SBVariablesOptions::GetIncludeLocals() const {
117 return m_opaque_ap->GetIncludeLocals();
120 void SBVariablesOptions::SetIncludeLocals(bool locals) {
121 m_opaque_ap->SetIncludeLocals(locals);
124 bool SBVariablesOptions::GetIncludeStatics() const {
125 return m_opaque_ap->GetIncludeStatics();
128 void SBVariablesOptions::SetIncludeStatics(bool statics) {
129 m_opaque_ap->SetIncludeStatics(statics);
132 bool SBVariablesOptions::GetInScopeOnly() const {
133 return m_opaque_ap->GetInScopeOnly();
136 void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) {
137 m_opaque_ap->SetInScopeOnly(in_scope_only);
140 bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const {
141 return m_opaque_ap->GetIncludeRuntimeSupportValues();
144 void SBVariablesOptions::SetIncludeRuntimeSupportValues(
145 bool runtime_support_values) {
146 m_opaque_ap->SetIncludeRuntimeSupportValues(runtime_support_values);
149 lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const {
150 return m_opaque_ap->GetUseDynamic();
153 void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) {
154 m_opaque_ap->SetUseDynamic(dynamic);
157 VariablesOptionsImpl *SBVariablesOptions::operator->() {
158 return m_opaque_ap.operator->();
161 const VariablesOptionsImpl *SBVariablesOptions::operator->() const {
162 return m_opaque_ap.operator->();
165 VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_ap.get(); }
167 VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_ap; }
169 const VariablesOptionsImpl &SBVariablesOptions::ref() const {
173 SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr)
174 : m_opaque_ap(std::move(lldb_object_ptr)) {}
176 void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) {
177 m_opaque_ap.reset(std::move(lldb_object_ptr));