1b9c1b51eSKate Stone //===-- SBVariablesOptions.cpp --------------------------------------*- C++ 2b9c1b51eSKate Stone //-*-===// 351f96eebSZachary Turner // 42946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 52946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 62946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 751f96eebSZachary Turner // 851f96eebSZachary Turner //===----------------------------------------------------------------------===// 951f96eebSZachary Turner 1051f96eebSZachary Turner #include "lldb/API/SBVariablesOptions.h" 11baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 124c7f5d5cSKuba Mracek #include "lldb/API/SBTarget.h" 134c7f5d5cSKuba Mracek #include "lldb/Target/Target.h" 144c7f5d5cSKuba Mracek 154c7f5d5cSKuba Mracek #include "lldb/lldb-private.h" 1651f96eebSZachary Turner 1751f96eebSZachary Turner using namespace lldb; 1851f96eebSZachary Turner using namespace lldb_private; 1951f96eebSZachary Turner 20b9c1b51eSKate Stone class VariablesOptionsImpl { 2151f96eebSZachary Turner public: 22b9c1b51eSKate Stone VariablesOptionsImpl() 234c7f5d5cSKuba Mracek : m_include_arguments(false), m_include_locals(false), 244c7f5d5cSKuba Mracek m_include_statics(false), m_in_scope_only(false), 254c7f5d5cSKuba Mracek m_include_runtime_support_values(false), 264c7f5d5cSKuba Mracek m_include_recognized_arguments(eLazyBoolCalculate), 27b9c1b51eSKate Stone m_use_dynamic(lldb::eNoDynamicValues) {} 2851f96eebSZachary Turner 2951f96eebSZachary Turner VariablesOptionsImpl(const VariablesOptionsImpl &) = default; 3051f96eebSZachary Turner 3151f96eebSZachary Turner ~VariablesOptionsImpl() = default; 3251f96eebSZachary Turner 33b9c1b51eSKate Stone VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default; 3451f96eebSZachary Turner 35b9c1b51eSKate Stone bool GetIncludeArguments() const { return m_include_arguments; } 3651f96eebSZachary Turner 37b9c1b51eSKate Stone void SetIncludeArguments(bool b) { m_include_arguments = b; } 3851f96eebSZachary Turner 394c7f5d5cSKuba Mracek bool GetIncludeRecognizedArguments(const lldb::TargetSP &target_sp) const { 404c7f5d5cSKuba Mracek if (m_include_recognized_arguments != eLazyBoolCalculate) 4141ae8e74SKuba Mracek return m_include_recognized_arguments; 424c7f5d5cSKuba Mracek return target_sp ? target_sp->GetDisplayRecognizedArguments() : false; 4341ae8e74SKuba Mracek } 4441ae8e74SKuba Mracek 4541ae8e74SKuba Mracek void SetIncludeRecognizedArguments(bool b) { 464c7f5d5cSKuba Mracek m_include_recognized_arguments = b ? eLazyBoolYes : eLazyBoolNo; 4741ae8e74SKuba Mracek } 4841ae8e74SKuba Mracek 49b9c1b51eSKate Stone bool GetIncludeLocals() const { return m_include_locals; } 5051f96eebSZachary Turner 51b9c1b51eSKate Stone void SetIncludeLocals(bool b) { m_include_locals = b; } 5251f96eebSZachary Turner 53b9c1b51eSKate Stone bool GetIncludeStatics() const { return m_include_statics; } 5451f96eebSZachary Turner 55b9c1b51eSKate Stone void SetIncludeStatics(bool b) { m_include_statics = b; } 5651f96eebSZachary Turner 57b9c1b51eSKate Stone bool GetInScopeOnly() const { return m_in_scope_only; } 5851f96eebSZachary Turner 59b9c1b51eSKate Stone void SetInScopeOnly(bool b) { m_in_scope_only = b; } 6051f96eebSZachary Turner 61b9c1b51eSKate Stone bool GetIncludeRuntimeSupportValues() const { 6251f96eebSZachary Turner return m_include_runtime_support_values; 6351f96eebSZachary Turner } 6451f96eebSZachary Turner 65b9c1b51eSKate Stone void SetIncludeRuntimeSupportValues(bool b) { 6651f96eebSZachary Turner m_include_runtime_support_values = b; 6751f96eebSZachary Turner } 6851f96eebSZachary Turner 69b9c1b51eSKate Stone lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; } 7051f96eebSZachary Turner 71b9c1b51eSKate Stone void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; } 7251f96eebSZachary Turner 7351f96eebSZachary Turner private: 7451f96eebSZachary Turner bool m_include_arguments : 1; 7551f96eebSZachary Turner bool m_include_locals : 1; 7651f96eebSZachary Turner bool m_include_statics : 1; 7751f96eebSZachary Turner bool m_in_scope_only : 1; 7851f96eebSZachary Turner bool m_include_runtime_support_values : 1; 794c7f5d5cSKuba Mracek LazyBool m_include_recognized_arguments; // can be overridden with a setting 8051f96eebSZachary Turner lldb::DynamicValueType m_use_dynamic; 8151f96eebSZachary Turner }; 8251f96eebSZachary Turner 83b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions() 84baf5664fSJonas Devlieghere : m_opaque_up(new VariablesOptionsImpl()) { 85baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBVariablesOptions); 86baf5664fSJonas Devlieghere } 8751f96eebSZachary Turner 88b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options) 89baf5664fSJonas Devlieghere : m_opaque_up(new VariablesOptionsImpl(options.ref())) { 90baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBVariablesOptions, 91baf5664fSJonas Devlieghere (const lldb::SBVariablesOptions &), options); 92baf5664fSJonas Devlieghere } 9351f96eebSZachary Turner 94b9c1b51eSKate Stone SBVariablesOptions &SBVariablesOptions:: 95b9c1b51eSKate Stone operator=(const SBVariablesOptions &options) { 96baf5664fSJonas Devlieghere LLDB_RECORD_METHOD( 97baf5664fSJonas Devlieghere lldb::SBVariablesOptions &, 98baf5664fSJonas Devlieghere SBVariablesOptions, operator=,(const lldb::SBVariablesOptions &), 99baf5664fSJonas Devlieghere options); 100baf5664fSJonas Devlieghere 101d5b44036SJonas Devlieghere m_opaque_up.reset(new VariablesOptionsImpl(options.ref())); 10251f96eebSZachary Turner return *this; 10351f96eebSZachary Turner } 10451f96eebSZachary Turner 10551f96eebSZachary Turner SBVariablesOptions::~SBVariablesOptions() = default; 10651f96eebSZachary Turner 107baf5664fSJonas Devlieghere bool SBVariablesOptions::IsValid() const { 108baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, IsValid); 109*7f5237bcSPavel Labath return this->operator bool(); 110*7f5237bcSPavel Labath } 111*7f5237bcSPavel Labath SBVariablesOptions::operator bool() const { 112*7f5237bcSPavel Labath LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, operator bool); 113baf5664fSJonas Devlieghere 114baf5664fSJonas Devlieghere return m_opaque_up != nullptr; 115baf5664fSJonas Devlieghere } 11651f96eebSZachary Turner 117b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeArguments() const { 118baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, 119baf5664fSJonas Devlieghere GetIncludeArguments); 120baf5664fSJonas Devlieghere 121d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeArguments(); 12251f96eebSZachary Turner } 12351f96eebSZachary Turner 124b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeArguments(bool arguments) { 125baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeArguments, (bool), 126baf5664fSJonas Devlieghere arguments); 127baf5664fSJonas Devlieghere 128d5b44036SJonas Devlieghere m_opaque_up->SetIncludeArguments(arguments); 12951f96eebSZachary Turner } 13051f96eebSZachary Turner 1314c7f5d5cSKuba Mracek bool SBVariablesOptions::GetIncludeRecognizedArguments( 1324c7f5d5cSKuba Mracek const lldb::SBTarget &target) const { 133baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST(bool, SBVariablesOptions, 134baf5664fSJonas Devlieghere GetIncludeRecognizedArguments, 135baf5664fSJonas Devlieghere (const lldb::SBTarget &), target); 136baf5664fSJonas Devlieghere 137d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeRecognizedArguments(target.GetSP()); 13841ae8e74SKuba Mracek } 13941ae8e74SKuba Mracek 14041ae8e74SKuba Mracek void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) { 141baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeRecognizedArguments, 142baf5664fSJonas Devlieghere (bool), arguments); 143baf5664fSJonas Devlieghere 144d5b44036SJonas Devlieghere m_opaque_up->SetIncludeRecognizedArguments(arguments); 14541ae8e74SKuba Mracek } 14641ae8e74SKuba Mracek 147b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeLocals() const { 148baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetIncludeLocals); 149baf5664fSJonas Devlieghere 150d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeLocals(); 15151f96eebSZachary Turner } 15251f96eebSZachary Turner 153b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeLocals(bool locals) { 154baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeLocals, (bool), 155baf5664fSJonas Devlieghere locals); 156baf5664fSJonas Devlieghere 157d5b44036SJonas Devlieghere m_opaque_up->SetIncludeLocals(locals); 15851f96eebSZachary Turner } 15951f96eebSZachary Turner 160b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeStatics() const { 161baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetIncludeStatics); 162baf5664fSJonas Devlieghere 163d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeStatics(); 16451f96eebSZachary Turner } 16551f96eebSZachary Turner 166b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeStatics(bool statics) { 167baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeStatics, (bool), 168baf5664fSJonas Devlieghere statics); 169baf5664fSJonas Devlieghere 170d5b44036SJonas Devlieghere m_opaque_up->SetIncludeStatics(statics); 17151f96eebSZachary Turner } 17251f96eebSZachary Turner 173b9c1b51eSKate Stone bool SBVariablesOptions::GetInScopeOnly() const { 174baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetInScopeOnly); 175baf5664fSJonas Devlieghere 176d5b44036SJonas Devlieghere return m_opaque_up->GetInScopeOnly(); 17751f96eebSZachary Turner } 17851f96eebSZachary Turner 179b9c1b51eSKate Stone void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) { 180baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetInScopeOnly, (bool), 181baf5664fSJonas Devlieghere in_scope_only); 182baf5664fSJonas Devlieghere 183d5b44036SJonas Devlieghere m_opaque_up->SetInScopeOnly(in_scope_only); 18451f96eebSZachary Turner } 18551f96eebSZachary Turner 186b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const { 187baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, 188baf5664fSJonas Devlieghere GetIncludeRuntimeSupportValues); 189baf5664fSJonas Devlieghere 190d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeRuntimeSupportValues(); 19151f96eebSZachary Turner } 19251f96eebSZachary Turner 193b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeRuntimeSupportValues( 194b9c1b51eSKate Stone bool runtime_support_values) { 195baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeRuntimeSupportValues, 196baf5664fSJonas Devlieghere (bool), runtime_support_values); 197baf5664fSJonas Devlieghere 198d5b44036SJonas Devlieghere m_opaque_up->SetIncludeRuntimeSupportValues(runtime_support_values); 19951f96eebSZachary Turner } 20051f96eebSZachary Turner 201b9c1b51eSKate Stone lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const { 202baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::DynamicValueType, SBVariablesOptions, 203baf5664fSJonas Devlieghere GetUseDynamic); 204baf5664fSJonas Devlieghere 205d5b44036SJonas Devlieghere return m_opaque_up->GetUseDynamic(); 20651f96eebSZachary Turner } 20751f96eebSZachary Turner 208b9c1b51eSKate Stone void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) { 209baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetUseDynamic, 210baf5664fSJonas Devlieghere (lldb::DynamicValueType), dynamic); 211baf5664fSJonas Devlieghere 212d5b44036SJonas Devlieghere m_opaque_up->SetUseDynamic(dynamic); 21351f96eebSZachary Turner } 21451f96eebSZachary Turner 215b9c1b51eSKate Stone VariablesOptionsImpl *SBVariablesOptions::operator->() { 216d5b44036SJonas Devlieghere return m_opaque_up.operator->(); 21751f96eebSZachary Turner } 21851f96eebSZachary Turner 219b9c1b51eSKate Stone const VariablesOptionsImpl *SBVariablesOptions::operator->() const { 220d5b44036SJonas Devlieghere return m_opaque_up.operator->(); 22151f96eebSZachary Turner } 22251f96eebSZachary Turner 223d5b44036SJonas Devlieghere VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_up.get(); } 22451f96eebSZachary Turner 225d5b44036SJonas Devlieghere VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_up; } 226b9c1b51eSKate Stone 227b9c1b51eSKate Stone const VariablesOptionsImpl &SBVariablesOptions::ref() const { 228d5b44036SJonas Devlieghere return *m_opaque_up; 22951f96eebSZachary Turner } 23051f96eebSZachary Turner 231b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr) 232d5b44036SJonas Devlieghere : m_opaque_up(std::move(lldb_object_ptr)) {} 23351f96eebSZachary Turner 234b9c1b51eSKate Stone void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) { 235d5b44036SJonas Devlieghere m_opaque_up.reset(std::move(lldb_object_ptr)); 23651f96eebSZachary Turner } 237