1*51f96eebSZachary Turner //===-- SBVariablesOptions.cpp --------------------------------------*- C++ -*-===//
2*51f96eebSZachary Turner //
3*51f96eebSZachary Turner //                     The LLVM Compiler Infrastructure
4*51f96eebSZachary Turner //
5*51f96eebSZachary Turner // This file is distributed under the University of Illinois Open Source
6*51f96eebSZachary Turner // License. See LICENSE.TXT for details.
7*51f96eebSZachary Turner //
8*51f96eebSZachary Turner //===----------------------------------------------------------------------===//
9*51f96eebSZachary Turner 
10*51f96eebSZachary Turner 
11*51f96eebSZachary Turner #include "lldb/API/SBVariablesOptions.h"
12*51f96eebSZachary Turner 
13*51f96eebSZachary Turner using namespace lldb;
14*51f96eebSZachary Turner using namespace lldb_private;
15*51f96eebSZachary Turner 
16*51f96eebSZachary Turner class VariablesOptionsImpl
17*51f96eebSZachary Turner {
18*51f96eebSZachary Turner public:
19*51f96eebSZachary Turner     VariablesOptionsImpl () :
20*51f96eebSZachary Turner     m_include_arguments(false),
21*51f96eebSZachary Turner     m_include_locals(false),
22*51f96eebSZachary Turner     m_include_statics(false),
23*51f96eebSZachary Turner     m_in_scope_only(false),
24*51f96eebSZachary Turner     m_include_runtime_support_values(false),
25*51f96eebSZachary Turner     m_use_dynamic(lldb::eNoDynamicValues)
26*51f96eebSZachary Turner     {}
27*51f96eebSZachary Turner 
28*51f96eebSZachary Turner     VariablesOptionsImpl (const VariablesOptionsImpl&) = default;
29*51f96eebSZachary Turner 
30*51f96eebSZachary Turner     ~VariablesOptionsImpl () = default;
31*51f96eebSZachary Turner 
32*51f96eebSZachary Turner     VariablesOptionsImpl&
33*51f96eebSZachary Turner     operator = (const VariablesOptionsImpl&) = default;
34*51f96eebSZachary Turner 
35*51f96eebSZachary Turner     bool
36*51f96eebSZachary Turner     GetIncludeArguments () const
37*51f96eebSZachary Turner     {
38*51f96eebSZachary Turner         return m_include_arguments;
39*51f96eebSZachary Turner     }
40*51f96eebSZachary Turner 
41*51f96eebSZachary Turner     void
42*51f96eebSZachary Turner     SetIncludeArguments (bool b)
43*51f96eebSZachary Turner     {
44*51f96eebSZachary Turner         m_include_arguments = b;
45*51f96eebSZachary Turner     }
46*51f96eebSZachary Turner 
47*51f96eebSZachary Turner     bool
48*51f96eebSZachary Turner     GetIncludeLocals () const
49*51f96eebSZachary Turner     {
50*51f96eebSZachary Turner         return m_include_locals;
51*51f96eebSZachary Turner     }
52*51f96eebSZachary Turner 
53*51f96eebSZachary Turner     void
54*51f96eebSZachary Turner     SetIncludeLocals (bool b)
55*51f96eebSZachary Turner     {
56*51f96eebSZachary Turner         m_include_locals = b;
57*51f96eebSZachary Turner     }
58*51f96eebSZachary Turner 
59*51f96eebSZachary Turner     bool
60*51f96eebSZachary Turner     GetIncludeStatics () const
61*51f96eebSZachary Turner     {
62*51f96eebSZachary Turner         return m_include_statics;
63*51f96eebSZachary Turner     }
64*51f96eebSZachary Turner 
65*51f96eebSZachary Turner     void
66*51f96eebSZachary Turner     SetIncludeStatics (bool b)
67*51f96eebSZachary Turner     {
68*51f96eebSZachary Turner         m_include_statics = b;
69*51f96eebSZachary Turner     }
70*51f96eebSZachary Turner 
71*51f96eebSZachary Turner     bool
72*51f96eebSZachary Turner     GetInScopeOnly () const
73*51f96eebSZachary Turner     {
74*51f96eebSZachary Turner         return m_in_scope_only;
75*51f96eebSZachary Turner     }
76*51f96eebSZachary Turner 
77*51f96eebSZachary Turner     void
78*51f96eebSZachary Turner     SetInScopeOnly (bool b)
79*51f96eebSZachary Turner     {
80*51f96eebSZachary Turner         m_in_scope_only = b;
81*51f96eebSZachary Turner     }
82*51f96eebSZachary Turner 
83*51f96eebSZachary Turner     bool
84*51f96eebSZachary Turner     GetIncludeRuntimeSupportValues () const
85*51f96eebSZachary Turner     {
86*51f96eebSZachary Turner         return m_include_runtime_support_values;
87*51f96eebSZachary Turner     }
88*51f96eebSZachary Turner 
89*51f96eebSZachary Turner     void
90*51f96eebSZachary Turner     SetIncludeRuntimeSupportValues (bool b)
91*51f96eebSZachary Turner     {
92*51f96eebSZachary Turner         m_include_runtime_support_values = b;
93*51f96eebSZachary Turner     }
94*51f96eebSZachary Turner 
95*51f96eebSZachary Turner     lldb::DynamicValueType
96*51f96eebSZachary Turner     GetUseDynamic () const
97*51f96eebSZachary Turner     {
98*51f96eebSZachary Turner         return m_use_dynamic;
99*51f96eebSZachary Turner     }
100*51f96eebSZachary Turner 
101*51f96eebSZachary Turner     void
102*51f96eebSZachary Turner     SetUseDynamic (lldb::DynamicValueType d)
103*51f96eebSZachary Turner     {
104*51f96eebSZachary Turner         m_use_dynamic = d;
105*51f96eebSZachary Turner     }
106*51f96eebSZachary Turner 
107*51f96eebSZachary Turner 
108*51f96eebSZachary Turner private:
109*51f96eebSZachary Turner     bool m_include_arguments : 1;
110*51f96eebSZachary Turner     bool m_include_locals : 1;
111*51f96eebSZachary Turner     bool m_include_statics : 1;
112*51f96eebSZachary Turner     bool m_in_scope_only : 1;
113*51f96eebSZachary Turner     bool m_include_runtime_support_values : 1;
114*51f96eebSZachary Turner     lldb::DynamicValueType m_use_dynamic;
115*51f96eebSZachary Turner };
116*51f96eebSZachary Turner 
117*51f96eebSZachary Turner SBVariablesOptions::SBVariablesOptions () :
118*51f96eebSZachary Turner m_opaque_ap(new VariablesOptionsImpl())
119*51f96eebSZachary Turner {
120*51f96eebSZachary Turner }
121*51f96eebSZachary Turner 
122*51f96eebSZachary Turner SBVariablesOptions::SBVariablesOptions (const SBVariablesOptions& options) :
123*51f96eebSZachary Turner m_opaque_ap(new VariablesOptionsImpl(options.ref()))
124*51f96eebSZachary Turner {
125*51f96eebSZachary Turner }
126*51f96eebSZachary Turner 
127*51f96eebSZachary Turner SBVariablesOptions&
128*51f96eebSZachary Turner SBVariablesOptions::operator = (const SBVariablesOptions& options)
129*51f96eebSZachary Turner {
130*51f96eebSZachary Turner     m_opaque_ap.reset(new VariablesOptionsImpl(options.ref()));
131*51f96eebSZachary Turner     return *this;
132*51f96eebSZachary Turner }
133*51f96eebSZachary Turner 
134*51f96eebSZachary Turner SBVariablesOptions::~SBVariablesOptions () = default;
135*51f96eebSZachary Turner 
136*51f96eebSZachary Turner bool
137*51f96eebSZachary Turner SBVariablesOptions::IsValid () const
138*51f96eebSZachary Turner {
139*51f96eebSZachary Turner     return m_opaque_ap.get() != nullptr;
140*51f96eebSZachary Turner }
141*51f96eebSZachary Turner 
142*51f96eebSZachary Turner bool
143*51f96eebSZachary Turner SBVariablesOptions::GetIncludeArguments () const
144*51f96eebSZachary Turner {
145*51f96eebSZachary Turner     return m_opaque_ap->GetIncludeArguments();
146*51f96eebSZachary Turner }
147*51f96eebSZachary Turner 
148*51f96eebSZachary Turner void
149*51f96eebSZachary Turner SBVariablesOptions::SetIncludeArguments (bool arguments)
150*51f96eebSZachary Turner {
151*51f96eebSZachary Turner     m_opaque_ap->SetIncludeArguments(arguments);
152*51f96eebSZachary Turner }
153*51f96eebSZachary Turner 
154*51f96eebSZachary Turner bool
155*51f96eebSZachary Turner SBVariablesOptions::GetIncludeLocals () const
156*51f96eebSZachary Turner {
157*51f96eebSZachary Turner     return m_opaque_ap->GetIncludeLocals();
158*51f96eebSZachary Turner }
159*51f96eebSZachary Turner 
160*51f96eebSZachary Turner void
161*51f96eebSZachary Turner SBVariablesOptions::SetIncludeLocals (bool locals)
162*51f96eebSZachary Turner {
163*51f96eebSZachary Turner     m_opaque_ap->SetIncludeLocals(locals);
164*51f96eebSZachary Turner }
165*51f96eebSZachary Turner 
166*51f96eebSZachary Turner bool
167*51f96eebSZachary Turner SBVariablesOptions::GetIncludeStatics () const
168*51f96eebSZachary Turner {
169*51f96eebSZachary Turner     return m_opaque_ap->GetIncludeStatics();
170*51f96eebSZachary Turner }
171*51f96eebSZachary Turner 
172*51f96eebSZachary Turner void
173*51f96eebSZachary Turner SBVariablesOptions::SetIncludeStatics (bool statics)
174*51f96eebSZachary Turner {
175*51f96eebSZachary Turner     m_opaque_ap->SetIncludeStatics(statics);
176*51f96eebSZachary Turner }
177*51f96eebSZachary Turner 
178*51f96eebSZachary Turner bool
179*51f96eebSZachary Turner SBVariablesOptions::GetInScopeOnly () const
180*51f96eebSZachary Turner {
181*51f96eebSZachary Turner     return m_opaque_ap->GetInScopeOnly();
182*51f96eebSZachary Turner }
183*51f96eebSZachary Turner 
184*51f96eebSZachary Turner void
185*51f96eebSZachary Turner SBVariablesOptions::SetInScopeOnly (bool in_scope_only)
186*51f96eebSZachary Turner {
187*51f96eebSZachary Turner     m_opaque_ap->SetInScopeOnly(in_scope_only);
188*51f96eebSZachary Turner }
189*51f96eebSZachary Turner 
190*51f96eebSZachary Turner bool
191*51f96eebSZachary Turner SBVariablesOptions::GetIncludeRuntimeSupportValues () const
192*51f96eebSZachary Turner {
193*51f96eebSZachary Turner     return m_opaque_ap->GetIncludeRuntimeSupportValues();
194*51f96eebSZachary Turner }
195*51f96eebSZachary Turner 
196*51f96eebSZachary Turner void
197*51f96eebSZachary Turner SBVariablesOptions::SetIncludeRuntimeSupportValues (bool runtime_support_values)
198*51f96eebSZachary Turner {
199*51f96eebSZachary Turner     m_opaque_ap->SetIncludeRuntimeSupportValues(runtime_support_values);
200*51f96eebSZachary Turner }
201*51f96eebSZachary Turner 
202*51f96eebSZachary Turner lldb::DynamicValueType
203*51f96eebSZachary Turner SBVariablesOptions::GetUseDynamic () const
204*51f96eebSZachary Turner {
205*51f96eebSZachary Turner     return m_opaque_ap->GetUseDynamic();
206*51f96eebSZachary Turner }
207*51f96eebSZachary Turner 
208*51f96eebSZachary Turner void
209*51f96eebSZachary Turner SBVariablesOptions::SetUseDynamic (lldb::DynamicValueType dynamic)
210*51f96eebSZachary Turner {
211*51f96eebSZachary Turner     m_opaque_ap->SetUseDynamic(dynamic);
212*51f96eebSZachary Turner }
213*51f96eebSZachary Turner 
214*51f96eebSZachary Turner VariablesOptionsImpl *
215*51f96eebSZachary Turner SBVariablesOptions::operator->()
216*51f96eebSZachary Turner {
217*51f96eebSZachary Turner     return m_opaque_ap.operator->();
218*51f96eebSZachary Turner }
219*51f96eebSZachary Turner 
220*51f96eebSZachary Turner const VariablesOptionsImpl *
221*51f96eebSZachary Turner SBVariablesOptions::operator->() const
222*51f96eebSZachary Turner {
223*51f96eebSZachary Turner     return m_opaque_ap.operator->();
224*51f96eebSZachary Turner }
225*51f96eebSZachary Turner 
226*51f96eebSZachary Turner VariablesOptionsImpl *
227*51f96eebSZachary Turner SBVariablesOptions::get ()
228*51f96eebSZachary Turner {
229*51f96eebSZachary Turner     return m_opaque_ap.get();
230*51f96eebSZachary Turner }
231*51f96eebSZachary Turner 
232*51f96eebSZachary Turner VariablesOptionsImpl &
233*51f96eebSZachary Turner SBVariablesOptions::ref()
234*51f96eebSZachary Turner {
235*51f96eebSZachary Turner     return *m_opaque_ap;
236*51f96eebSZachary Turner }
237*51f96eebSZachary Turner 
238*51f96eebSZachary Turner const VariablesOptionsImpl &
239*51f96eebSZachary Turner SBVariablesOptions::ref() const
240*51f96eebSZachary Turner {
241*51f96eebSZachary Turner     return *m_opaque_ap;
242*51f96eebSZachary Turner }
243*51f96eebSZachary Turner 
244*51f96eebSZachary Turner SBVariablesOptions::SBVariablesOptions (VariablesOptionsImpl *lldb_object_ptr) :
245*51f96eebSZachary Turner m_opaque_ap(std::move(lldb_object_ptr))
246*51f96eebSZachary Turner {
247*51f96eebSZachary Turner }
248*51f96eebSZachary Turner 
249*51f96eebSZachary Turner void
250*51f96eebSZachary Turner SBVariablesOptions::SetOptions (VariablesOptionsImpl *lldb_object_ptr)
251*51f96eebSZachary Turner {
252*51f96eebSZachary Turner     m_opaque_ap.reset(std::move(lldb_object_ptr));
253*51f96eebSZachary Turner }
254*51f96eebSZachary Turner 
255