1*35e1bda6SJim Ingham //===-- SBExpressionOptions.cpp ---------------------------------------------*- C++ -*-===//
2*35e1bda6SJim Ingham //
3*35e1bda6SJim Ingham //                     The LLVM Compiler Infrastructure
4*35e1bda6SJim Ingham //
5*35e1bda6SJim Ingham // This file is distributed under the University of Illinois Open Source
6*35e1bda6SJim Ingham // License. See LICENSE.TXT for details.
7*35e1bda6SJim Ingham //
8*35e1bda6SJim Ingham //===----------------------------------------------------------------------===//
9*35e1bda6SJim Ingham 
10*35e1bda6SJim Ingham #include "lldb/API/SBExpressionOptions.h"
11*35e1bda6SJim Ingham #include "lldb/API/SBStream.h"
12*35e1bda6SJim Ingham 
13*35e1bda6SJim Ingham #include "lldb/Target/Target.h"
14*35e1bda6SJim Ingham 
15*35e1bda6SJim Ingham using namespace lldb;
16*35e1bda6SJim Ingham using namespace lldb_private;
17*35e1bda6SJim Ingham 
18*35e1bda6SJim Ingham 
19*35e1bda6SJim Ingham SBExpressionOptions::SBExpressionOptions ()
20*35e1bda6SJim Ingham {
21*35e1bda6SJim Ingham     m_opaque_ap.reset(new EvaluateExpressionOptions());
22*35e1bda6SJim Ingham }
23*35e1bda6SJim Ingham 
24*35e1bda6SJim Ingham SBExpressionOptions::SBExpressionOptions (bool coerce_to_id,
25*35e1bda6SJim Ingham                          bool unwind_on_error,
26*35e1bda6SJim Ingham                          bool keep_in_memory,
27*35e1bda6SJim Ingham                          bool run_others,
28*35e1bda6SJim Ingham                          DynamicValueType use_dynamic,
29*35e1bda6SJim Ingham                          uint32_t timeout_usec)
30*35e1bda6SJim Ingham {
31*35e1bda6SJim Ingham     m_opaque_ap.reset(new EvaluateExpressionOptions());
32*35e1bda6SJim Ingham     m_opaque_ap->SetCoerceToId(coerce_to_id);
33*35e1bda6SJim Ingham     m_opaque_ap->SetUnwindOnError(unwind_on_error);
34*35e1bda6SJim Ingham     m_opaque_ap->SetKeepInMemory(keep_in_memory);
35*35e1bda6SJim Ingham     m_opaque_ap->SetRunOthers(run_others);
36*35e1bda6SJim Ingham     m_opaque_ap->SetUseDynamic (use_dynamic);
37*35e1bda6SJim Ingham     m_opaque_ap->SetTimeoutUsec (timeout_usec);
38*35e1bda6SJim Ingham }
39*35e1bda6SJim Ingham 
40*35e1bda6SJim Ingham SBExpressionOptions::SBExpressionOptions (const SBExpressionOptions &rhs)
41*35e1bda6SJim Ingham {
42*35e1bda6SJim Ingham     m_opaque_ap.reset(new EvaluateExpressionOptions());
43*35e1bda6SJim Ingham     *(m_opaque_ap.get()) = rhs.ref();
44*35e1bda6SJim Ingham }
45*35e1bda6SJim Ingham 
46*35e1bda6SJim Ingham const SBExpressionOptions &
47*35e1bda6SJim Ingham SBExpressionOptions::operator = (const SBExpressionOptions &rhs)
48*35e1bda6SJim Ingham {
49*35e1bda6SJim Ingham     if (this != &rhs)
50*35e1bda6SJim Ingham     {
51*35e1bda6SJim Ingham         this->ref() = rhs.ref();
52*35e1bda6SJim Ingham     }
53*35e1bda6SJim Ingham     return *this;
54*35e1bda6SJim Ingham }
55*35e1bda6SJim Ingham 
56*35e1bda6SJim Ingham SBExpressionOptions::~SBExpressionOptions()
57*35e1bda6SJim Ingham {
58*35e1bda6SJim Ingham }
59*35e1bda6SJim Ingham 
60*35e1bda6SJim Ingham bool
61*35e1bda6SJim Ingham SBExpressionOptions::DoesCoerceToId () const
62*35e1bda6SJim Ingham {
63*35e1bda6SJim Ingham     return m_opaque_ap->DoesCoerceToId ();
64*35e1bda6SJim Ingham }
65*35e1bda6SJim Ingham 
66*35e1bda6SJim Ingham void
67*35e1bda6SJim Ingham SBExpressionOptions::SetCoerceToId (bool coerce)
68*35e1bda6SJim Ingham {
69*35e1bda6SJim Ingham     m_opaque_ap->SetCoerceToId (coerce);
70*35e1bda6SJim Ingham }
71*35e1bda6SJim Ingham 
72*35e1bda6SJim Ingham bool
73*35e1bda6SJim Ingham SBExpressionOptions::DoesUnwindOnError () const
74*35e1bda6SJim Ingham {
75*35e1bda6SJim Ingham     return m_opaque_ap->DoesUnwindOnError ();
76*35e1bda6SJim Ingham }
77*35e1bda6SJim Ingham 
78*35e1bda6SJim Ingham void
79*35e1bda6SJim Ingham SBExpressionOptions::SetUnwindOnError (bool unwind)
80*35e1bda6SJim Ingham {
81*35e1bda6SJim Ingham     m_opaque_ap->SetUnwindOnError (unwind);
82*35e1bda6SJim Ingham }
83*35e1bda6SJim Ingham 
84*35e1bda6SJim Ingham bool
85*35e1bda6SJim Ingham SBExpressionOptions::DoesKeepInMemory () const
86*35e1bda6SJim Ingham {
87*35e1bda6SJim Ingham     return m_opaque_ap->DoesKeepInMemory ();
88*35e1bda6SJim Ingham }
89*35e1bda6SJim Ingham 
90*35e1bda6SJim Ingham void
91*35e1bda6SJim Ingham SBExpressionOptions::SetKeepInMemory (bool keep)
92*35e1bda6SJim Ingham {
93*35e1bda6SJim Ingham     m_opaque_ap->SetKeepInMemory (keep);
94*35e1bda6SJim Ingham }
95*35e1bda6SJim Ingham 
96*35e1bda6SJim Ingham lldb::DynamicValueType
97*35e1bda6SJim Ingham SBExpressionOptions::GetUseDynamic () const
98*35e1bda6SJim Ingham {
99*35e1bda6SJim Ingham     return m_opaque_ap->GetUseDynamic ();
100*35e1bda6SJim Ingham }
101*35e1bda6SJim Ingham 
102*35e1bda6SJim Ingham void
103*35e1bda6SJim Ingham SBExpressionOptions::SetUseDynamic (lldb::DynamicValueType dynamic)
104*35e1bda6SJim Ingham {
105*35e1bda6SJim Ingham     m_opaque_ap->SetUseDynamic (dynamic);
106*35e1bda6SJim Ingham }
107*35e1bda6SJim Ingham 
108*35e1bda6SJim Ingham uint32_t
109*35e1bda6SJim Ingham SBExpressionOptions::GetTimeoutUsec () const
110*35e1bda6SJim Ingham {
111*35e1bda6SJim Ingham     return m_opaque_ap->GetTimeoutUsec ();
112*35e1bda6SJim Ingham }
113*35e1bda6SJim Ingham 
114*35e1bda6SJim Ingham void
115*35e1bda6SJim Ingham SBExpressionOptions::SetTimeoutUsec (uint32_t timeout)
116*35e1bda6SJim Ingham {
117*35e1bda6SJim Ingham     m_opaque_ap->SetTimeoutUsec (timeout);
118*35e1bda6SJim Ingham }
119*35e1bda6SJim Ingham 
120*35e1bda6SJim Ingham bool
121*35e1bda6SJim Ingham SBExpressionOptions::GetRunOthers () const
122*35e1bda6SJim Ingham {
123*35e1bda6SJim Ingham     return m_opaque_ap->GetRunOthers ();
124*35e1bda6SJim Ingham }
125*35e1bda6SJim Ingham 
126*35e1bda6SJim Ingham void
127*35e1bda6SJim Ingham SBExpressionOptions::SetRunOthers (bool run_others)
128*35e1bda6SJim Ingham {
129*35e1bda6SJim Ingham     m_opaque_ap->SetRunOthers (run_others);
130*35e1bda6SJim Ingham }
131*35e1bda6SJim Ingham 
132*35e1bda6SJim Ingham EvaluateExpressionOptions *
133*35e1bda6SJim Ingham SBExpressionOptions::get() const
134*35e1bda6SJim Ingham {
135*35e1bda6SJim Ingham     return m_opaque_ap.get();
136*35e1bda6SJim Ingham }
137*35e1bda6SJim Ingham 
138*35e1bda6SJim Ingham EvaluateExpressionOptions &
139*35e1bda6SJim Ingham SBExpressionOptions::ref () const
140*35e1bda6SJim Ingham {
141*35e1bda6SJim Ingham     return *(m_opaque_ap.get());
142*35e1bda6SJim Ingham }
143