1314564Sdim//===-- SBVariablesOptions.cpp --------------------------------------*- C++ 2314564Sdim//-*-===// 3285101Semaste// 4353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5353358Sdim// See https://llvm.org/LICENSE.txt for license information. 6353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7285101Semaste// 8285101Semaste//===----------------------------------------------------------------------===// 9285101Semaste 10285101Semaste#include "lldb/API/SBVariablesOptions.h" 11353358Sdim#include "SBReproducerPrivate.h" 12344779Sdim#include "lldb/API/SBTarget.h" 13344779Sdim#include "lldb/Target/Target.h" 14285101Semaste 15344779Sdim#include "lldb/lldb-private.h" 16344779Sdim 17285101Semasteusing namespace lldb; 18285101Semasteusing namespace lldb_private; 19285101Semaste 20314564Sdimclass VariablesOptionsImpl { 21285101Semastepublic: 22314564Sdim VariablesOptionsImpl() 23314564Sdim : m_include_arguments(false), m_include_locals(false), 24314564Sdim m_include_statics(false), m_in_scope_only(false), 25314564Sdim m_include_runtime_support_values(false), 26344779Sdim m_include_recognized_arguments(eLazyBoolCalculate), 27314564Sdim m_use_dynamic(lldb::eNoDynamicValues) {} 28285101Semaste 29314564Sdim VariablesOptionsImpl(const VariablesOptionsImpl &) = default; 30285101Semaste 31314564Sdim ~VariablesOptionsImpl() = default; 32314564Sdim 33314564Sdim VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default; 34314564Sdim 35314564Sdim bool GetIncludeArguments() const { return m_include_arguments; } 36314564Sdim 37314564Sdim void SetIncludeArguments(bool b) { m_include_arguments = b; } 38314564Sdim 39344779Sdim bool GetIncludeRecognizedArguments(const lldb::TargetSP &target_sp) const { 40344779Sdim if (m_include_recognized_arguments != eLazyBoolCalculate) 41344779Sdim return m_include_recognized_arguments; 42344779Sdim return target_sp ? target_sp->GetDisplayRecognizedArguments() : false; 43344779Sdim } 44344779Sdim 45344779Sdim void SetIncludeRecognizedArguments(bool b) { 46344779Sdim m_include_recognized_arguments = b ? eLazyBoolYes : eLazyBoolNo; 47344779Sdim } 48344779Sdim 49314564Sdim bool GetIncludeLocals() const { return m_include_locals; } 50314564Sdim 51314564Sdim void SetIncludeLocals(bool b) { m_include_locals = b; } 52314564Sdim 53314564Sdim bool GetIncludeStatics() const { return m_include_statics; } 54314564Sdim 55314564Sdim void SetIncludeStatics(bool b) { m_include_statics = b; } 56314564Sdim 57314564Sdim bool GetInScopeOnly() const { return m_in_scope_only; } 58314564Sdim 59314564Sdim void SetInScopeOnly(bool b) { m_in_scope_only = b; } 60314564Sdim 61314564Sdim bool GetIncludeRuntimeSupportValues() const { 62314564Sdim return m_include_runtime_support_values; 63314564Sdim } 64314564Sdim 65314564Sdim void SetIncludeRuntimeSupportValues(bool b) { 66314564Sdim m_include_runtime_support_values = b; 67314564Sdim } 68314564Sdim 69314564Sdim lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; } 70314564Sdim 71314564Sdim void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; } 72314564Sdim 73285101Semasteprivate: 74314564Sdim bool m_include_arguments : 1; 75314564Sdim bool m_include_locals : 1; 76314564Sdim bool m_include_statics : 1; 77314564Sdim bool m_in_scope_only : 1; 78314564Sdim bool m_include_runtime_support_values : 1; 79344779Sdim LazyBool m_include_recognized_arguments; // can be overridden with a setting 80314564Sdim lldb::DynamicValueType m_use_dynamic; 81285101Semaste}; 82285101Semaste 83314564SdimSBVariablesOptions::SBVariablesOptions() 84353358Sdim : m_opaque_up(new VariablesOptionsImpl()) { 85353358Sdim LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBVariablesOptions); 86353358Sdim} 87285101Semaste 88314564SdimSBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options) 89353358Sdim : m_opaque_up(new VariablesOptionsImpl(options.ref())) { 90353358Sdim LLDB_RECORD_CONSTRUCTOR(SBVariablesOptions, 91353358Sdim (const lldb::SBVariablesOptions &), options); 92353358Sdim} 93285101Semaste 94314564SdimSBVariablesOptions &SBVariablesOptions:: 95314564Sdimoperator=(const SBVariablesOptions &options) { 96353358Sdim LLDB_RECORD_METHOD( 97353358Sdim lldb::SBVariablesOptions &, 98353358Sdim SBVariablesOptions, operator=,(const lldb::SBVariablesOptions &), 99353358Sdim options); 100353358Sdim 101353358Sdim m_opaque_up.reset(new VariablesOptionsImpl(options.ref())); 102353358Sdim return LLDB_RECORD_RESULT(*this); 103285101Semaste} 104285101Semaste 105314564SdimSBVariablesOptions::~SBVariablesOptions() = default; 106285101Semaste 107353358Sdimbool SBVariablesOptions::IsValid() const { 108353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, IsValid); 109353358Sdim return this->operator bool(); 110353358Sdim} 111353358SdimSBVariablesOptions::operator bool() const { 112353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, operator bool); 113285101Semaste 114353358Sdim return m_opaque_up != nullptr; 115353358Sdim} 116353358Sdim 117314564Sdimbool SBVariablesOptions::GetIncludeArguments() const { 118353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, 119353358Sdim GetIncludeArguments); 120353358Sdim 121353358Sdim return m_opaque_up->GetIncludeArguments(); 122285101Semaste} 123285101Semaste 124314564Sdimvoid SBVariablesOptions::SetIncludeArguments(bool arguments) { 125353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeArguments, (bool), 126353358Sdim arguments); 127353358Sdim 128353358Sdim m_opaque_up->SetIncludeArguments(arguments); 129285101Semaste} 130285101Semaste 131344779Sdimbool SBVariablesOptions::GetIncludeRecognizedArguments( 132344779Sdim const lldb::SBTarget &target) const { 133353358Sdim LLDB_RECORD_METHOD_CONST(bool, SBVariablesOptions, 134353358Sdim GetIncludeRecognizedArguments, 135353358Sdim (const lldb::SBTarget &), target); 136353358Sdim 137353358Sdim return m_opaque_up->GetIncludeRecognizedArguments(target.GetSP()); 138344779Sdim} 139344779Sdim 140344779Sdimvoid SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) { 141353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeRecognizedArguments, 142353358Sdim (bool), arguments); 143353358Sdim 144353358Sdim m_opaque_up->SetIncludeRecognizedArguments(arguments); 145344779Sdim} 146344779Sdim 147314564Sdimbool SBVariablesOptions::GetIncludeLocals() const { 148353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetIncludeLocals); 149353358Sdim 150353358Sdim return m_opaque_up->GetIncludeLocals(); 151285101Semaste} 152285101Semaste 153314564Sdimvoid SBVariablesOptions::SetIncludeLocals(bool locals) { 154353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeLocals, (bool), 155353358Sdim locals); 156353358Sdim 157353358Sdim m_opaque_up->SetIncludeLocals(locals); 158285101Semaste} 159285101Semaste 160314564Sdimbool SBVariablesOptions::GetIncludeStatics() const { 161353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetIncludeStatics); 162353358Sdim 163353358Sdim return m_opaque_up->GetIncludeStatics(); 164285101Semaste} 165285101Semaste 166314564Sdimvoid SBVariablesOptions::SetIncludeStatics(bool statics) { 167353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeStatics, (bool), 168353358Sdim statics); 169353358Sdim 170353358Sdim m_opaque_up->SetIncludeStatics(statics); 171285101Semaste} 172285101Semaste 173314564Sdimbool SBVariablesOptions::GetInScopeOnly() const { 174353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, GetInScopeOnly); 175353358Sdim 176353358Sdim return m_opaque_up->GetInScopeOnly(); 177285101Semaste} 178285101Semaste 179314564Sdimvoid SBVariablesOptions::SetInScopeOnly(bool in_scope_only) { 180353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetInScopeOnly, (bool), 181353358Sdim in_scope_only); 182353358Sdim 183353358Sdim m_opaque_up->SetInScopeOnly(in_scope_only); 184285101Semaste} 185285101Semaste 186314564Sdimbool SBVariablesOptions::GetIncludeRuntimeSupportValues() const { 187353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBVariablesOptions, 188353358Sdim GetIncludeRuntimeSupportValues); 189353358Sdim 190353358Sdim return m_opaque_up->GetIncludeRuntimeSupportValues(); 191285101Semaste} 192285101Semaste 193314564Sdimvoid SBVariablesOptions::SetIncludeRuntimeSupportValues( 194314564Sdim bool runtime_support_values) { 195353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetIncludeRuntimeSupportValues, 196353358Sdim (bool), runtime_support_values); 197353358Sdim 198353358Sdim m_opaque_up->SetIncludeRuntimeSupportValues(runtime_support_values); 199285101Semaste} 200285101Semaste 201314564Sdimlldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const { 202353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::DynamicValueType, SBVariablesOptions, 203353358Sdim GetUseDynamic); 204353358Sdim 205353358Sdim return m_opaque_up->GetUseDynamic(); 206285101Semaste} 207285101Semaste 208314564Sdimvoid SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) { 209353358Sdim LLDB_RECORD_METHOD(void, SBVariablesOptions, SetUseDynamic, 210353358Sdim (lldb::DynamicValueType), dynamic); 211353358Sdim 212353358Sdim m_opaque_up->SetUseDynamic(dynamic); 213285101Semaste} 214285101Semaste 215314564SdimVariablesOptionsImpl *SBVariablesOptions::operator->() { 216353358Sdim return m_opaque_up.operator->(); 217285101Semaste} 218285101Semaste 219314564Sdimconst VariablesOptionsImpl *SBVariablesOptions::operator->() const { 220353358Sdim return m_opaque_up.operator->(); 221285101Semaste} 222285101Semaste 223353358SdimVariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_up.get(); } 224285101Semaste 225353358SdimVariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_up; } 226285101Semaste 227314564Sdimconst VariablesOptionsImpl &SBVariablesOptions::ref() const { 228353358Sdim return *m_opaque_up; 229285101Semaste} 230285101Semaste 231314564SdimSBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr) 232353358Sdim : m_opaque_up(std::move(lldb_object_ptr)) {} 233285101Semaste 234314564Sdimvoid SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) { 235353358Sdim m_opaque_up.reset(std::move(lldb_object_ptr)); 236285101Semaste} 237353358Sdim 238353358Sdimnamespace lldb_private { 239353358Sdimnamespace repro { 240353358Sdim 241353358Sdimtemplate <> 242353358Sdimvoid RegisterMethods<SBVariablesOptions>(Registry &R) { 243353358Sdim LLDB_REGISTER_CONSTRUCTOR(SBVariablesOptions, ()); 244353358Sdim LLDB_REGISTER_CONSTRUCTOR(SBVariablesOptions, 245353358Sdim (const lldb::SBVariablesOptions &)); 246353358Sdim LLDB_REGISTER_METHOD( 247353358Sdim lldb::SBVariablesOptions &, 248353358Sdim SBVariablesOptions, operator=,(const lldb::SBVariablesOptions &)); 249353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, IsValid, ()); 250353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, operator bool, ()); 251353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetIncludeArguments, 252353358Sdim ()); 253353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetIncludeArguments, (bool)); 254353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, 255353358Sdim GetIncludeRecognizedArguments, 256353358Sdim (const lldb::SBTarget &)); 257353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, 258353358Sdim SetIncludeRecognizedArguments, (bool)); 259353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetIncludeLocals, ()); 260353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetIncludeLocals, (bool)); 261353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetIncludeStatics, ()); 262353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetIncludeStatics, (bool)); 263353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, GetInScopeOnly, ()); 264353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetInScopeOnly, (bool)); 265353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBVariablesOptions, 266353358Sdim GetIncludeRuntimeSupportValues, ()); 267353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, 268353358Sdim SetIncludeRuntimeSupportValues, (bool)); 269353358Sdim LLDB_REGISTER_METHOD_CONST(lldb::DynamicValueType, SBVariablesOptions, 270353358Sdim GetUseDynamic, ()); 271353358Sdim LLDB_REGISTER_METHOD(void, SBVariablesOptions, SetUseDynamic, 272353358Sdim (lldb::DynamicValueType)); 273353358Sdim} 274353358Sdim 275353358Sdim} 276353358Sdim} 277