1 //===-- SBVariablesOptions.cpp --------------------------------------*- C++
2 //-*-===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10 
11 #include "lldb/API/SBVariablesOptions.h"
12 
13 using namespace lldb;
14 using namespace lldb_private;
15 
16 class VariablesOptionsImpl {
17 public:
18   VariablesOptionsImpl()
19       : m_include_arguments(false), m_include_recognized_arguments(false),
20         m_include_locals(false), m_include_statics(false),
21         m_in_scope_only(false), m_include_runtime_support_values(false),
22         m_use_dynamic(lldb::eNoDynamicValues) {}
23 
24   VariablesOptionsImpl(const VariablesOptionsImpl &) = default;
25 
26   ~VariablesOptionsImpl() = default;
27 
28   VariablesOptionsImpl &operator=(const VariablesOptionsImpl &) = default;
29 
30   bool GetIncludeArguments() const { return m_include_arguments; }
31 
32   void SetIncludeArguments(bool b) { m_include_arguments = b; }
33 
34   bool GetIncludeRecognizedArguments() const {
35     return m_include_recognized_arguments;
36   }
37 
38   void SetIncludeRecognizedArguments(bool b) {
39     m_include_recognized_arguments = b;
40   }
41 
42   bool GetIncludeLocals() const { return m_include_locals; }
43 
44   void SetIncludeLocals(bool b) { m_include_locals = b; }
45 
46   bool GetIncludeStatics() const { return m_include_statics; }
47 
48   void SetIncludeStatics(bool b) { m_include_statics = b; }
49 
50   bool GetInScopeOnly() const { return m_in_scope_only; }
51 
52   void SetInScopeOnly(bool b) { m_in_scope_only = b; }
53 
54   bool GetIncludeRuntimeSupportValues() const {
55     return m_include_runtime_support_values;
56   }
57 
58   void SetIncludeRuntimeSupportValues(bool b) {
59     m_include_runtime_support_values = b;
60   }
61 
62   lldb::DynamicValueType GetUseDynamic() const { return m_use_dynamic; }
63 
64   void SetUseDynamic(lldb::DynamicValueType d) { m_use_dynamic = d; }
65 
66 private:
67   bool m_include_arguments : 1;
68   bool m_include_recognized_arguments : 1;
69   bool m_include_locals : 1;
70   bool m_include_statics : 1;
71   bool m_in_scope_only : 1;
72   bool m_include_runtime_support_values : 1;
73   lldb::DynamicValueType m_use_dynamic;
74 };
75 
76 SBVariablesOptions::SBVariablesOptions()
77     : m_opaque_ap(new VariablesOptionsImpl()) {}
78 
79 SBVariablesOptions::SBVariablesOptions(const SBVariablesOptions &options)
80     : m_opaque_ap(new VariablesOptionsImpl(options.ref())) {}
81 
82 SBVariablesOptions &SBVariablesOptions::
83 operator=(const SBVariablesOptions &options) {
84   m_opaque_ap.reset(new VariablesOptionsImpl(options.ref()));
85   return *this;
86 }
87 
88 SBVariablesOptions::~SBVariablesOptions() = default;
89 
90 bool SBVariablesOptions::IsValid() const { return m_opaque_ap != nullptr; }
91 
92 bool SBVariablesOptions::GetIncludeArguments() const {
93   return m_opaque_ap->GetIncludeArguments();
94 }
95 
96 void SBVariablesOptions::SetIncludeArguments(bool arguments) {
97   m_opaque_ap->SetIncludeArguments(arguments);
98 }
99 
100 bool SBVariablesOptions::GetIncludeRecognizedArguments() const {
101   return m_opaque_ap->GetIncludeRecognizedArguments();
102 }
103 
104 void SBVariablesOptions::SetIncludeRecognizedArguments(bool arguments) {
105   m_opaque_ap->SetIncludeRecognizedArguments(arguments);
106 }
107 
108 bool SBVariablesOptions::GetIncludeLocals() const {
109   return m_opaque_ap->GetIncludeLocals();
110 }
111 
112 void SBVariablesOptions::SetIncludeLocals(bool locals) {
113   m_opaque_ap->SetIncludeLocals(locals);
114 }
115 
116 bool SBVariablesOptions::GetIncludeStatics() const {
117   return m_opaque_ap->GetIncludeStatics();
118 }
119 
120 void SBVariablesOptions::SetIncludeStatics(bool statics) {
121   m_opaque_ap->SetIncludeStatics(statics);
122 }
123 
124 bool SBVariablesOptions::GetInScopeOnly() const {
125   return m_opaque_ap->GetInScopeOnly();
126 }
127 
128 void SBVariablesOptions::SetInScopeOnly(bool in_scope_only) {
129   m_opaque_ap->SetInScopeOnly(in_scope_only);
130 }
131 
132 bool SBVariablesOptions::GetIncludeRuntimeSupportValues() const {
133   return m_opaque_ap->GetIncludeRuntimeSupportValues();
134 }
135 
136 void SBVariablesOptions::SetIncludeRuntimeSupportValues(
137     bool runtime_support_values) {
138   m_opaque_ap->SetIncludeRuntimeSupportValues(runtime_support_values);
139 }
140 
141 lldb::DynamicValueType SBVariablesOptions::GetUseDynamic() const {
142   return m_opaque_ap->GetUseDynamic();
143 }
144 
145 void SBVariablesOptions::SetUseDynamic(lldb::DynamicValueType dynamic) {
146   m_opaque_ap->SetUseDynamic(dynamic);
147 }
148 
149 VariablesOptionsImpl *SBVariablesOptions::operator->() {
150   return m_opaque_ap.operator->();
151 }
152 
153 const VariablesOptionsImpl *SBVariablesOptions::operator->() const {
154   return m_opaque_ap.operator->();
155 }
156 
157 VariablesOptionsImpl *SBVariablesOptions::get() { return m_opaque_ap.get(); }
158 
159 VariablesOptionsImpl &SBVariablesOptions::ref() { return *m_opaque_ap; }
160 
161 const VariablesOptionsImpl &SBVariablesOptions::ref() const {
162   return *m_opaque_ap;
163 }
164 
165 SBVariablesOptions::SBVariablesOptions(VariablesOptionsImpl *lldb_object_ptr)
166     : m_opaque_ap(std::move(lldb_object_ptr)) {}
167 
168 void SBVariablesOptions::SetOptions(VariablesOptionsImpl *lldb_object_ptr) {
169   m_opaque_ap.reset(std::move(lldb_object_ptr));
170 }
171