1b9c1b51eSKate Stone //===-- SBVariablesOptions.cpp --------------------------------------*- C++ 2b9c1b51eSKate Stone //-*-===// 351f96eebSZachary Turner // 451f96eebSZachary Turner // The LLVM Compiler Infrastructure 551f96eebSZachary Turner // 651f96eebSZachary Turner // This file is distributed under the University of Illinois Open Source 751f96eebSZachary Turner // License. See LICENSE.TXT for details. 851f96eebSZachary Turner // 951f96eebSZachary Turner //===----------------------------------------------------------------------===// 1051f96eebSZachary Turner 1151f96eebSZachary Turner #include "lldb/API/SBVariablesOptions.h" 12*4c7f5d5cSKuba Mracek #include "lldb/API/SBTarget.h" 13*4c7f5d5cSKuba Mracek #include "lldb/Target/Target.h" 14*4c7f5d5cSKuba Mracek 15*4c7f5d5cSKuba 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() 23*4c7f5d5cSKuba Mracek : m_include_arguments(false), m_include_locals(false), 24*4c7f5d5cSKuba Mracek m_include_statics(false), m_in_scope_only(false), 25*4c7f5d5cSKuba Mracek m_include_runtime_support_values(false), 26*4c7f5d5cSKuba 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 39*4c7f5d5cSKuba Mracek bool GetIncludeRecognizedArguments(const lldb::TargetSP &target_sp) const { 40*4c7f5d5cSKuba Mracek if (m_include_recognized_arguments != eLazyBoolCalculate) 4141ae8e74SKuba Mracek return m_include_recognized_arguments; 42*4c7f5d5cSKuba Mracek return target_sp ? target_sp->GetDisplayRecognizedArguments() : false; 4341ae8e74SKuba Mracek } 4441ae8e74SKuba Mracek 4541ae8e74SKuba Mracek void SetIncludeRecognizedArguments(bool b) { 46*4c7f5d5cSKuba 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; 79*4c7f5d5cSKuba 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() 84b9c1b51eSKate Stone : m_opaque_ap(new VariablesOptionsImpl()) {} 8551f96eebSZachary Turner 86b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options) 87b9c1b51eSKate Stone : m_opaque_ap(new VariablesOptionsImpl(options.ref())) {} 8851f96eebSZachary Turner 89b9c1b51eSKate Stone SBVariablesOptions &SBVariablesOptions:: 90b9c1b51eSKate Stone operator=(const SBVariablesOptions &options) { 9151f96eebSZachary Turner m_opaque_ap.reset(new VariablesOptionsImpl(options.ref())); 9251f96eebSZachary Turner return *this; 9351f96eebSZachary Turner } 9451f96eebSZachary Turner 9551f96eebSZachary Turner SBVariablesOptions::~SBVariablesOptions() = default; 9651f96eebSZachary Turner 973447077aSJonas Devlieghere bool SBVariablesOptions::IsValid() const { return m_opaque_ap != nullptr; } 9851f96eebSZachary Turner 99b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeArguments() const { 10051f96eebSZachary Turner return m_opaque_ap->GetIncludeArguments(); 10151f96eebSZachary Turner } 10251f96eebSZachary Turner 103b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeArguments(bool arguments) { 10451f96eebSZachary Turner m_opaque_ap->SetIncludeArguments(arguments); 10551f96eebSZachary Turner } 10651f96eebSZachary Turner 107*4c7f5d5cSKuba Mracek bool SBVariablesOptions::GetIncludeRecognizedArguments( 108*4c7f5d5cSKuba Mracek const lldb::SBTarget &target) const { 109*4c7f5d5cSKuba Mracek return m_opaque_ap->GetIncludeRecognizedArguments(target.GetSP()); 11041ae8e74SKuba Mracek } 11141ae8e74SKuba Mracek 11241ae8e74SKuba Mracek void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) { 11341ae8e74SKuba Mracek m_opaque_ap->SetIncludeRecognizedArguments(arguments); 11441ae8e74SKuba Mracek } 11541ae8e74SKuba Mracek 116b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeLocals() const { 11751f96eebSZachary Turner return m_opaque_ap->GetIncludeLocals(); 11851f96eebSZachary Turner } 11951f96eebSZachary Turner 120b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeLocals(bool locals) { 12151f96eebSZachary Turner m_opaque_ap->SetIncludeLocals(locals); 12251f96eebSZachary Turner } 12351f96eebSZachary Turner 124b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeStatics() const { 12551f96eebSZachary Turner return m_opaque_ap->GetIncludeStatics(); 12651f96eebSZachary Turner } 12751f96eebSZachary Turner 128b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeStatics(bool statics) { 12951f96eebSZachary Turner m_opaque_ap->SetIncludeStatics(statics); 13051f96eebSZachary Turner } 13151f96eebSZachary Turner 132b9c1b51eSKate Stone bool SBVariablesOptions::GetInScopeOnly() const { 13351f96eebSZachary Turner return m_opaque_ap->GetInScopeOnly(); 13451f96eebSZachary Turner } 13551f96eebSZachary Turner 136b9c1b51eSKate Stone void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) { 13751f96eebSZachary Turner m_opaque_ap->SetInScopeOnly(in_scope_only); 13851f96eebSZachary Turner } 13951f96eebSZachary Turner 140b9c1b51eSKate Stone bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const { 14151f96eebSZachary Turner return m_opaque_ap->GetIncludeRuntimeSupportValues(); 14251f96eebSZachary Turner } 14351f96eebSZachary Turner 144b9c1b51eSKate Stone void SBVariablesOptions::SetIncludeRuntimeSupportValues( 145b9c1b51eSKate Stone bool runtime_support_values) { 14651f96eebSZachary Turner m_opaque_ap->SetIncludeRuntimeSupportValues(runtime_support_values); 14751f96eebSZachary Turner } 14851f96eebSZachary Turner 149b9c1b51eSKate Stone lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const { 15051f96eebSZachary Turner return m_opaque_ap->GetUseDynamic(); 15151f96eebSZachary Turner } 15251f96eebSZachary Turner 153b9c1b51eSKate Stone void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) { 15451f96eebSZachary Turner m_opaque_ap->SetUseDynamic(dynamic); 15551f96eebSZachary Turner } 15651f96eebSZachary Turner 157b9c1b51eSKate Stone VariablesOptionsImpl *SBVariablesOptions::operator->() { 15851f96eebSZachary Turner return m_opaque_ap.operator->(); 15951f96eebSZachary Turner } 16051f96eebSZachary Turner 161b9c1b51eSKate Stone const VariablesOptionsImpl *SBVariablesOptions::operator->() const { 16251f96eebSZachary Turner return m_opaque_ap.operator->(); 16351f96eebSZachary Turner } 16451f96eebSZachary Turner 165b9c1b51eSKate Stone VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_ap.get(); } 16651f96eebSZachary Turner 167b9c1b51eSKate Stone VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_ap; } 168b9c1b51eSKate Stone 169b9c1b51eSKate Stone const VariablesOptionsImpl &SBVariablesOptions::ref() const { 17051f96eebSZachary Turner return *m_opaque_ap; 17151f96eebSZachary Turner } 17251f96eebSZachary Turner 173b9c1b51eSKate Stone SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr) 174b9c1b51eSKate Stone : m_opaque_ap(std::move(lldb_object_ptr)) {} 17551f96eebSZachary Turner 176b9c1b51eSKate Stone void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) { 17751f96eebSZachary Turner m_opaque_ap.reset(std::move(lldb_object_ptr)); 17851f96eebSZachary Turner } 179