1*80814287SRaphael 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" 10baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 114c7f5d5cSKuba Mracek #include "lldb/API/SBTarget.h" 124c7f5d5cSKuba Mracek #include "lldb/Target/Target.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: 21b9c1b51eSKate Stone VariablesOptionsImpl() 224c7f5d5cSKuba Mracek : m_include_arguments(false), m_include_locals(false), 234c7f5d5cSKuba Mracek m_include_statics(false), m_in_scope_only(false), 244c7f5d5cSKuba Mracek m_include_runtime_support_values(false), 254c7f5d5cSKuba Mracek m_include_recognized_arguments(eLazyBoolCalculate), 26b9c1b51eSKate Stone m_use_dynamic(lldb::eNoDynamicValues) {} 2751f96eebSZachary Turner 2851f96eebSZachary Turner VariablesOptionsImpl(const VariablesOptionsImpl &) = default; 2951f96eebSZachary Turner 3051f96eebSZachary Turner ~VariablesOptionsImpl() = default; 3151f96eebSZachary Turner 32b9c1b51eSKate Stone VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default; 3351f96eebSZachary Turner 34b9c1b51eSKate Stone bool GetIncludeArguments() const { return m_include_arguments; } 3551f96eebSZachary Turner 36b9c1b51eSKate Stone void SetIncludeArguments(bool b) { m_include_arguments = b; } 3751f96eebSZachary Turner 384c7f5d5cSKuba Mracek bool GetIncludeRecognizedArguments(const lldb::TargetSP &target_sp) const { 394c7f5d5cSKuba Mracek if (m_include_recognized_arguments != eLazyBoolCalculate) 4041ae8e74SKuba Mracek return m_include_recognized_arguments; 414c7f5d5cSKuba Mracek return target_sp ? target_sp->GetDisplayRecognizedArguments() : false; 4241ae8e74SKuba Mracek } 4341ae8e74SKuba Mracek 4441ae8e74SKuba Mracek void SetIncludeRecognizedArguments(bool b) { 454c7f5d5cSKuba Mracek m_include_recognized_arguments = b ? eLazyBoolYes : eLazyBoolNo; 4641ae8e74SKuba Mracek } 4741ae8e74SKuba Mracek 48b9c1b51eSKate Stone bool GetIncludeLocals() const { return m_include_locals; } 4951f96eebSZachary Turner 50b9c1b51eSKate Stone void SetIncludeLocals(bool b) { m_include_locals = b; } 5151f96eebSZachary Turner 52b9c1b51eSKate Stone bool GetIncludeStatics() const { return m_include_statics; } 5351f96eebSZachary Turner 54b9c1b51eSKate Stone void SetIncludeStatics(bool b) { m_include_statics = b; } 5551f96eebSZachary Turner 56b9c1b51eSKate Stone bool GetInScopeOnly() const { return m_in_scope_only; } 5751f96eebSZachary Turner 58b9c1b51eSKate Stone void SetInScopeOnly(bool b) { m_in_scope_only = b; } 5951f96eebSZachary Turner 60b9c1b51eSKate Stone bool GetIncludeRuntimeSupportValues() const { 6151f96eebSZachary Turner return m_include_runtime_support_values; 6251f96eebSZachary Turner } 6351f96eebSZachary Turner 64b9c1b51eSKate Stone void SetIncludeRuntimeSupportValues(bool b) { 6551f96eebSZachary Turner m_include_runtime_support_values = b; 6651f96eebSZachary Turner } 6751f96eebSZachary Turner 68b9c1b51eSKate Stone lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; } 6951f96eebSZachary Turner 70b9c1b51eSKate Stone void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; } 7151f96eebSZachary Turner 7251f96eebSZachary Turner private: 7351f96eebSZachary Turner bool m_include_arguments : 1; 7451f96eebSZachary Turner bool m_include_locals : 1; 7551f96eebSZachary Turner bool m_include_statics : 1; 7651f96eebSZachary Turner bool m_in_scope_only : 1; 7751f96eebSZachary Turner bool m_include_runtime_support_values : 1; 784c7f5d5cSKuba Mracek LazyBool m_include_recognized_arguments; // can be overridden with a setting 7951f96eebSZachary Turner lldb::DynamicValueType m_use_dynamic; 8051f96eebSZachary Turner }; 8151f96eebSZachary Turner 82b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions() 83baf5664fSJonas Devlieghere : m_opaque_up(new VariablesOptionsImpl()) { 84baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBVariablesOptions); 85baf5664fSJonas Devlieghere } 8651f96eebSZachary Turner 87b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options) 88baf5664fSJonas Devlieghere : m_opaque_up(new VariablesOptionsImpl(options.ref())) { 89baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBVariablesOptions, 90baf5664fSJonas Devlieghere (const lldb::SBVariablesOptions &), options); 91baf5664fSJonas Devlieghere } 9251f96eebSZachary Turner 93b9c1b51eSKate Stone SBVariablesOptions &SBVariablesOptions:: 94b9c1b51eSKate Stone operator=(const SBVariablesOptions &options) { 95baf5664fSJonas Devlieghere LLDB_RECORD_METHOD( 96baf5664fSJonas Devlieghere lldb::SBVariablesOptions &, 97baf5664fSJonas Devlieghere SBVariablesOptions, operator=,(const lldb::SBVariablesOptions &), 98baf5664fSJonas Devlieghere options); 99baf5664fSJonas Devlieghere 100d5b44036SJonas Devlieghere m_opaque_up.reset(new VariablesOptionsImpl(options.ref())); 101306809f2SJonas Devlieghere return LLDB_RECORD_RESULT(*this); 10251f96eebSZachary Turner } 10351f96eebSZachary Turner 10451f96eebSZachary Turner SBVariablesOptions::~SBVariablesOptions() = default; 10551f96eebSZachary Turner 106baf5664fSJonas Devlieghere bool SBVariablesOptions::IsValid() const { 107baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, IsValid); 1087f5237bcSPavel Labath return this->operator bool(); 1097f5237bcSPavel Labath } 1107f5237bcSPavel Labath SBVariablesOptions::operator bool() const { 1117f5237bcSPavel Labath LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, operator bool); 112baf5664fSJonas Devlieghere 113baf5664fSJonas Devlieghere return m_opaque_up != nullptr; 114baf5664fSJonas Devlieghere } 11551f96eebSZachary Turner 116b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeArguments() const { 117baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, 118baf5664fSJonas Devlieghere GetIncludeArguments); 119baf5664fSJonas Devlieghere 120d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeArguments(); 12151f96eebSZachary Turner } 12251f96eebSZachary Turner 123b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeArguments(bool arguments) { 124baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeArguments, (bool), 125baf5664fSJonas Devlieghere arguments); 126baf5664fSJonas Devlieghere 127d5b44036SJonas Devlieghere m_opaque_up->SetIncludeArguments(arguments); 12851f96eebSZachary Turner } 12951f96eebSZachary Turner 1304c7f5d5cSKuba Mracek bool SBVariablesOptions::GetIncludeRecognizedArguments( 1314c7f5d5cSKuba Mracek const lldb::SBTarget &target) const { 132baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST(bool, SBVariablesOptions, 133baf5664fSJonas Devlieghere GetIncludeRecognizedArguments, 134baf5664fSJonas Devlieghere (const lldb::SBTarget &), target); 135baf5664fSJonas Devlieghere 136d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeRecognizedArguments(target.GetSP()); 13741ae8e74SKuba Mracek } 13841ae8e74SKuba Mracek 13941ae8e74SKuba Mracek void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) { 140baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeRecognizedArguments, 141baf5664fSJonas Devlieghere (bool), arguments); 142baf5664fSJonas Devlieghere 143d5b44036SJonas Devlieghere m_opaque_up->SetIncludeRecognizedArguments(arguments); 14441ae8e74SKuba Mracek } 14541ae8e74SKuba Mracek 146b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeLocals() const { 147baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetIncludeLocals); 148baf5664fSJonas Devlieghere 149d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeLocals(); 15051f96eebSZachary Turner } 15151f96eebSZachary Turner 152b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeLocals(bool locals) { 153baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeLocals, (bool), 154baf5664fSJonas Devlieghere locals); 155baf5664fSJonas Devlieghere 156d5b44036SJonas Devlieghere m_opaque_up->SetIncludeLocals(locals); 15751f96eebSZachary Turner } 15851f96eebSZachary Turner 159b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeStatics() const { 160baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetIncludeStatics); 161baf5664fSJonas Devlieghere 162d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeStatics(); 16351f96eebSZachary Turner } 16451f96eebSZachary Turner 165b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeStatics(bool statics) { 166baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeStatics, (bool), 167baf5664fSJonas Devlieghere statics); 168baf5664fSJonas Devlieghere 169d5b44036SJonas Devlieghere m_opaque_up->SetIncludeStatics(statics); 17051f96eebSZachary Turner } 17151f96eebSZachary Turner 172b9c1b51eSKate Stone bool SBVariablesOptions::GetInScopeOnly() const { 173baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetInScopeOnly); 174baf5664fSJonas Devlieghere 175d5b44036SJonas Devlieghere return m_opaque_up->GetInScopeOnly(); 17651f96eebSZachary Turner } 17751f96eebSZachary Turner 178b9c1b51eSKate Stone void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) { 179baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetInScopeOnly, (bool), 180baf5664fSJonas Devlieghere in_scope_only); 181baf5664fSJonas Devlieghere 182d5b44036SJonas Devlieghere m_opaque_up->SetInScopeOnly(in_scope_only); 18351f96eebSZachary Turner } 18451f96eebSZachary Turner 185b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const { 186baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, 187baf5664fSJonas Devlieghere GetIncludeRuntimeSupportValues); 188baf5664fSJonas Devlieghere 189d5b44036SJonas Devlieghere return m_opaque_up->GetIncludeRuntimeSupportValues(); 19051f96eebSZachary Turner } 19151f96eebSZachary Turner 192b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeRuntimeSupportValues( 193b9c1b51eSKate Stone bool runtime_support_values) { 194baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeRuntimeSupportValues, 195baf5664fSJonas Devlieghere (bool), runtime_support_values); 196baf5664fSJonas Devlieghere 197d5b44036SJonas Devlieghere m_opaque_up->SetIncludeRuntimeSupportValues(runtime_support_values); 19851f96eebSZachary Turner } 19951f96eebSZachary Turner 200b9c1b51eSKate Stone lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const { 201baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::DynamicValueType, SBVariablesOptions, 202baf5664fSJonas Devlieghere GetUseDynamic); 203baf5664fSJonas Devlieghere 204d5b44036SJonas Devlieghere return m_opaque_up->GetUseDynamic(); 20551f96eebSZachary Turner } 20651f96eebSZachary Turner 207b9c1b51eSKate Stone void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) { 208baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBVariablesOptions, SetUseDynamic, 209baf5664fSJonas Devlieghere (lldb::DynamicValueType), dynamic); 210baf5664fSJonas Devlieghere 211d5b44036SJonas Devlieghere m_opaque_up->SetUseDynamic(dynamic); 21251f96eebSZachary Turner } 21351f96eebSZachary Turner 214b9c1b51eSKate Stone VariablesOptionsImpl *SBVariablesOptions::operator->() { 215d5b44036SJonas Devlieghere return m_opaque_up.operator->(); 21651f96eebSZachary Turner } 21751f96eebSZachary Turner 218b9c1b51eSKate Stone const VariablesOptionsImpl *SBVariablesOptions::operator->() const { 219d5b44036SJonas Devlieghere return m_opaque_up.operator->(); 22051f96eebSZachary Turner } 22151f96eebSZachary Turner 222d5b44036SJonas Devlieghere VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_up.get(); } 22351f96eebSZachary Turner 224d5b44036SJonas Devlieghere VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_up; } 225b9c1b51eSKate Stone 226b9c1b51eSKate Stone const VariablesOptionsImpl &SBVariablesOptions::ref() const { 227d5b44036SJonas Devlieghere return *m_opaque_up; 22851f96eebSZachary Turner } 22951f96eebSZachary Turner 230b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr) 231d5b44036SJonas Devlieghere : m_opaque_up(std::move(lldb_object_ptr)) {} 23251f96eebSZachary Turner 233b9c1b51eSKate Stone void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) { 234d5b44036SJonas Devlieghere m_opaque_up.reset(std::move(lldb_object_ptr)); 23551f96eebSZachary Turner } 236ae211eceSMichal Gorny 237ae211eceSMichal Gorny namespace lldb_private { 238ae211eceSMichal Gorny namespace repro { 239ae211eceSMichal Gorny 240ae211eceSMichal Gorny template <> 241ae211eceSMichal Gorny void RegisterMethods<SBVariablesOptions>(Registry &R) { 242ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBVariablesOptions, ()); 243ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBVariablesOptions, 244ae211eceSMichal Gorny (const lldb::SBVariablesOptions &)); 245ae211eceSMichal Gorny LLDB_REGISTER_METHOD( 246ae211eceSMichal Gorny lldb::SBVariablesOptions &, 247ae211eceSMichal Gorny SBVariablesOptions, operator=,(const lldb::SBVariablesOptions &)); 248ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, IsValid, ()); 249ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, operator bool, ()); 250ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetIncludeArguments, 251ae211eceSMichal Gorny ()); 252ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetIncludeArguments, (bool)); 253ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, 254ae211eceSMichal Gorny GetIncludeRecognizedArguments, 255ae211eceSMichal Gorny (const lldb::SBTarget &)); 256ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, 257ae211eceSMichal Gorny SetIncludeRecognizedArguments, (bool)); 258ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetIncludeLocals, ()); 259ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetIncludeLocals, (bool)); 260ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetIncludeStatics, ()); 261ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetIncludeStatics, (bool)); 262ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetInScopeOnly, ()); 263ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetInScopeOnly, (bool)); 264ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, 265ae211eceSMichal Gorny GetIncludeRuntimeSupportValues, ()); 266ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, 267ae211eceSMichal Gorny SetIncludeRuntimeSupportValues, (bool)); 268ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(lldb::DynamicValueType, SBVariablesOptions, 269ae211eceSMichal Gorny GetUseDynamic, ()); 270ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetUseDynamic, 271ae211eceSMichal Gorny (lldb::DynamicValueType)); 272ae211eceSMichal Gorny } 273ae211eceSMichal Gorny 274ae211eceSMichal Gorny } 275ae211eceSMichal Gorny } 276