180814287SRaphael Isemann //===-- SBVariablesOptions.cpp --------------------------------------------===//
251f96eebSZachary Turner //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
651f96eebSZachary Turner //
751f96eebSZachary Turner //===----------------------------------------------------------------------===//
851f96eebSZachary Turner
951f96eebSZachary Turner #include "lldb/API/SBVariablesOptions.h"
104c7f5d5cSKuba Mracek #include "lldb/API/SBTarget.h"
114c7f5d5cSKuba Mracek #include "lldb/Target/Target.h"
12*1755f5b1SJonas Devlieghere #include "lldb/Utility/Instrumentation.h"
134c7f5d5cSKuba Mracek
144c7f5d5cSKuba Mracek #include "lldb/lldb-private.h"
1551f96eebSZachary Turner
1651f96eebSZachary Turner using namespace lldb;
1751f96eebSZachary Turner using namespace lldb_private;
1851f96eebSZachary Turner
19b9c1b51eSKate Stone class VariablesOptionsImpl {
2051f96eebSZachary Turner public:
VariablesOptionsImpl()21b9c1b51eSKate Stone VariablesOptionsImpl()
224c7f5d5cSKuba Mracek : m_include_arguments(false), m_include_locals(false),
234c7f5d5cSKuba Mracek m_include_statics(false), m_in_scope_only(false),
249494c510SJonas Devlieghere m_include_runtime_support_values(false) {}
2551f96eebSZachary Turner
2651f96eebSZachary Turner VariablesOptionsImpl(const VariablesOptionsImpl &) = default;
2751f96eebSZachary Turner
2851f96eebSZachary Turner ~VariablesOptionsImpl() = default;
2951f96eebSZachary Turner
30b9c1b51eSKate Stone VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default;
3151f96eebSZachary Turner
GetIncludeArguments() const32b9c1b51eSKate Stone bool GetIncludeArguments() const { return m_include_arguments; }
3351f96eebSZachary Turner
SetIncludeArguments(bool b)34b9c1b51eSKate Stone void SetIncludeArguments(bool b) { m_include_arguments = b; }
3551f96eebSZachary Turner
GetIncludeRecognizedArguments(const lldb::TargetSP & target_sp) const364c7f5d5cSKuba Mracek bool GetIncludeRecognizedArguments(const lldb::TargetSP &target_sp) const {
374c7f5d5cSKuba Mracek if (m_include_recognized_arguments != eLazyBoolCalculate)
3841ae8e74SKuba Mracek return m_include_recognized_arguments;
394c7f5d5cSKuba Mracek return target_sp ? target_sp->GetDisplayRecognizedArguments() : false;
4041ae8e74SKuba Mracek }
4141ae8e74SKuba Mracek
SetIncludeRecognizedArguments(bool b)4241ae8e74SKuba Mracek void SetIncludeRecognizedArguments(bool b) {
434c7f5d5cSKuba Mracek m_include_recognized_arguments = b ? eLazyBoolYes : eLazyBoolNo;
4441ae8e74SKuba Mracek }
4541ae8e74SKuba Mracek
GetIncludeLocals() const46b9c1b51eSKate Stone bool GetIncludeLocals() const { return m_include_locals; }
4751f96eebSZachary Turner
SetIncludeLocals(bool b)48b9c1b51eSKate Stone void SetIncludeLocals(bool b) { m_include_locals = b; }
4951f96eebSZachary Turner
GetIncludeStatics() const50b9c1b51eSKate Stone bool GetIncludeStatics() const { return m_include_statics; }
5151f96eebSZachary Turner
SetIncludeStatics(bool b)52b9c1b51eSKate Stone void SetIncludeStatics(bool b) { m_include_statics = b; }
5351f96eebSZachary Turner
GetInScopeOnly() const54b9c1b51eSKate Stone bool GetInScopeOnly() const { return m_in_scope_only; }
5551f96eebSZachary Turner
SetInScopeOnly(bool b)56b9c1b51eSKate Stone void SetInScopeOnly(bool b) { m_in_scope_only = b; }
5751f96eebSZachary Turner
GetIncludeRuntimeSupportValues() const58b9c1b51eSKate Stone bool GetIncludeRuntimeSupportValues() const {
5951f96eebSZachary Turner return m_include_runtime_support_values;
6051f96eebSZachary Turner }
6151f96eebSZachary Turner
SetIncludeRuntimeSupportValues(bool b)62b9c1b51eSKate Stone void SetIncludeRuntimeSupportValues(bool b) {
6351f96eebSZachary Turner m_include_runtime_support_values = b;
6451f96eebSZachary Turner }
6551f96eebSZachary Turner
GetUseDynamic() const66b9c1b51eSKate Stone lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; }
6751f96eebSZachary Turner
SetUseDynamic(lldb::DynamicValueType d)68b9c1b51eSKate Stone void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; }
6951f96eebSZachary Turner
7051f96eebSZachary Turner private:
7151f96eebSZachary Turner bool m_include_arguments : 1;
7251f96eebSZachary Turner bool m_include_locals : 1;
7351f96eebSZachary Turner bool m_include_statics : 1;
7451f96eebSZachary Turner bool m_in_scope_only : 1;
7551f96eebSZachary Turner bool m_include_runtime_support_values : 1;
769494c510SJonas Devlieghere LazyBool m_include_recognized_arguments =
779494c510SJonas Devlieghere eLazyBoolCalculate; // can be overridden with a setting
789494c510SJonas Devlieghere lldb::DynamicValueType m_use_dynamic = lldb::eNoDynamicValues;
7951f96eebSZachary Turner };
8051f96eebSZachary Turner
SBVariablesOptions()81b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions()
82baf5664fSJonas Devlieghere : m_opaque_up(new VariablesOptionsImpl()) {
83*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
84baf5664fSJonas Devlieghere }
8551f96eebSZachary Turner
SBVariablesOptions(const SBVariablesOptions & options)86b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options)
87baf5664fSJonas Devlieghere : m_opaque_up(new VariablesOptionsImpl(options.ref())) {
88*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, options);
89baf5664fSJonas Devlieghere }
9051f96eebSZachary Turner
91b9c1b51eSKate Stone SBVariablesOptions &SBVariablesOptions::
operator =(const SBVariablesOptions & options)92b9c1b51eSKate Stone operator=(const SBVariablesOptions &options) {
93*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, options);
94baf5664fSJonas Devlieghere
951c0bbe43SJonas Devlieghere m_opaque_up = std::make_unique<VariablesOptionsImpl>(options.ref());
96d232abc3SJonas Devlieghere return *this;
9751f96eebSZachary Turner }
9851f96eebSZachary Turner
9951f96eebSZachary Turner SBVariablesOptions::~SBVariablesOptions() = default;
10051f96eebSZachary Turner
IsValid() const101baf5664fSJonas Devlieghere bool SBVariablesOptions::IsValid() const {
102*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
1037f5237bcSPavel Labath return this->operator bool();
1047f5237bcSPavel Labath }
operator bool() const1057f5237bcSPavel Labath SBVariablesOptions::operator bool() const {
106*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
107baf5664fSJonas Devlieghere
108baf5664fSJonas Devlieghere return m_opaque_up != nullptr;
109baf5664fSJonas Devlieghere }
11051f96eebSZachary Turner
GetIncludeArguments() const111b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeArguments() const {
112*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
113baf5664fSJonas Devlieghere
114d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeArguments();
11551f96eebSZachary Turner }
11651f96eebSZachary Turner
SetIncludeArguments(bool arguments)117b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeArguments(bool arguments) {
118*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, arguments);
119baf5664fSJonas Devlieghere
120d5b44036SJonas Devlieghere m_opaque_up->SetIncludeArguments(arguments);
12151f96eebSZachary Turner }
12251f96eebSZachary Turner
GetIncludeRecognizedArguments(const lldb::SBTarget & target) const1234c7f5d5cSKuba Mracek bool SBVariablesOptions::GetIncludeRecognizedArguments(
1244c7f5d5cSKuba Mracek const lldb::SBTarget &target) const {
125*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, target);
126baf5664fSJonas Devlieghere
127d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeRecognizedArguments(target.GetSP());
12841ae8e74SKuba Mracek }
12941ae8e74SKuba Mracek
SetIncludeRecognizedArguments(bool arguments)13041ae8e74SKuba Mracek void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) {
131*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, arguments);
132baf5664fSJonas Devlieghere
133d5b44036SJonas Devlieghere m_opaque_up->SetIncludeRecognizedArguments(arguments);
13441ae8e74SKuba Mracek }
13541ae8e74SKuba Mracek
GetIncludeLocals() const136b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeLocals() const {
137*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
138baf5664fSJonas Devlieghere
139d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeLocals();
14051f96eebSZachary Turner }
14151f96eebSZachary Turner
SetIncludeLocals(bool locals)142b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeLocals(bool locals) {
143*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, locals);
144baf5664fSJonas Devlieghere
145d5b44036SJonas Devlieghere m_opaque_up->SetIncludeLocals(locals);
14651f96eebSZachary Turner }
14751f96eebSZachary Turner
GetIncludeStatics() const148b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeStatics() const {
149*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
150baf5664fSJonas Devlieghere
151d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeStatics();
15251f96eebSZachary Turner }
15351f96eebSZachary Turner
SetIncludeStatics(bool statics)154b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeStatics(bool statics) {
155*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, statics);
156baf5664fSJonas Devlieghere
157d5b44036SJonas Devlieghere m_opaque_up->SetIncludeStatics(statics);
15851f96eebSZachary Turner }
15951f96eebSZachary Turner
GetInScopeOnly() const160b9c1b51eSKate Stone bool SBVariablesOptions::GetInScopeOnly() const {
161*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
162baf5664fSJonas Devlieghere
163d5b44036SJonas Devlieghere return m_opaque_up->GetInScopeOnly();
16451f96eebSZachary Turner }
16551f96eebSZachary Turner
SetInScopeOnly(bool in_scope_only)166b9c1b51eSKate Stone void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) {
167*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, in_scope_only);
168baf5664fSJonas Devlieghere
169d5b44036SJonas Devlieghere m_opaque_up->SetInScopeOnly(in_scope_only);
17051f96eebSZachary Turner }
17151f96eebSZachary Turner
GetIncludeRuntimeSupportValues() const172b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const {
173*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
174baf5664fSJonas Devlieghere
175d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeRuntimeSupportValues();
17651f96eebSZachary Turner }
17751f96eebSZachary Turner
SetIncludeRuntimeSupportValues(bool runtime_support_values)178b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeRuntimeSupportValues(
179b9c1b51eSKate Stone bool runtime_support_values) {
180*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, runtime_support_values);
181baf5664fSJonas Devlieghere
182d5b44036SJonas Devlieghere m_opaque_up->SetIncludeRuntimeSupportValues(runtime_support_values);
18351f96eebSZachary Turner }
18451f96eebSZachary Turner
GetUseDynamic() const185b9c1b51eSKate Stone lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const {
186*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
187baf5664fSJonas Devlieghere
188d5b44036SJonas Devlieghere return m_opaque_up->GetUseDynamic();
18951f96eebSZachary Turner }
19051f96eebSZachary Turner
SetUseDynamic(lldb::DynamicValueType dynamic)191b9c1b51eSKate Stone void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) {
192*1755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, dynamic);
193baf5664fSJonas Devlieghere
194d5b44036SJonas Devlieghere m_opaque_up->SetUseDynamic(dynamic);
19551f96eebSZachary Turner }
19651f96eebSZachary Turner
operator ->()197b9c1b51eSKate Stone VariablesOptionsImpl *SBVariablesOptions::operator->() {
198d5b44036SJonas Devlieghere return m_opaque_up.operator->();
19951f96eebSZachary Turner }
20051f96eebSZachary Turner
operator ->() const201b9c1b51eSKate Stone const VariablesOptionsImpl *SBVariablesOptions::operator->() const {
202d5b44036SJonas Devlieghere return m_opaque_up.operator->();
20351f96eebSZachary Turner }
20451f96eebSZachary Turner
get()205d5b44036SJonas Devlieghere VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_up.get(); }
20651f96eebSZachary Turner
ref()207d5b44036SJonas Devlieghere VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_up; }
208b9c1b51eSKate Stone
ref() const209b9c1b51eSKate Stone const VariablesOptionsImpl &SBVariablesOptions::ref() const {
210d5b44036SJonas Devlieghere return *m_opaque_up;
21151f96eebSZachary Turner }
21251f96eebSZachary Turner
SBVariablesOptions(VariablesOptionsImpl * lldb_object_ptr)213b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr)
214d5b44036SJonas Devlieghere : m_opaque_up(std::move(lldb_object_ptr)) {}
21551f96eebSZachary Turner
SetOptions(VariablesOptionsImpl * lldb_object_ptr)216b9c1b51eSKate Stone void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) {
217d5b44036SJonas Devlieghere m_opaque_up.reset(std::move(lldb_object_ptr));
21851f96eebSZachary Turner }
219