1*b9c1b51eSKate Stone //===-- SBExpressionOptions.cpp ---------------------------------------------*-
2*b9c1b51eSKate Stone //C++ -*-===//
335e1bda6SJim Ingham //
435e1bda6SJim Ingham //                     The LLVM Compiler Infrastructure
535e1bda6SJim Ingham //
635e1bda6SJim Ingham // This file is distributed under the University of Illinois Open Source
735e1bda6SJim Ingham // License. See LICENSE.TXT for details.
835e1bda6SJim Ingham //
935e1bda6SJim Ingham //===----------------------------------------------------------------------===//
1035e1bda6SJim Ingham 
1135e1bda6SJim Ingham #include "lldb/API/SBExpressionOptions.h"
1235e1bda6SJim Ingham #include "lldb/API/SBStream.h"
1335e1bda6SJim Ingham 
1435e1bda6SJim Ingham #include "lldb/Target/Target.h"
1535e1bda6SJim Ingham 
1635e1bda6SJim Ingham using namespace lldb;
1735e1bda6SJim Ingham using namespace lldb_private;
1835e1bda6SJim Ingham 
19*b9c1b51eSKate Stone SBExpressionOptions::SBExpressionOptions()
20*b9c1b51eSKate Stone     : m_opaque_ap(new EvaluateExpressionOptions()) {}
2135e1bda6SJim Ingham 
22*b9c1b51eSKate Stone SBExpressionOptions::SBExpressionOptions(const SBExpressionOptions &rhs) {
2335e1bda6SJim Ingham   m_opaque_ap.reset(new EvaluateExpressionOptions());
2435e1bda6SJim Ingham   *(m_opaque_ap.get()) = rhs.ref();
2535e1bda6SJim Ingham }
2635e1bda6SJim Ingham 
27*b9c1b51eSKate Stone const SBExpressionOptions &SBExpressionOptions::
28*b9c1b51eSKate Stone operator=(const SBExpressionOptions &rhs) {
29*b9c1b51eSKate Stone   if (this != &rhs) {
3035e1bda6SJim Ingham     this->ref() = rhs.ref();
3135e1bda6SJim Ingham   }
3235e1bda6SJim Ingham   return *this;
3335e1bda6SJim Ingham }
3435e1bda6SJim Ingham 
35*b9c1b51eSKate Stone SBExpressionOptions::~SBExpressionOptions() {}
3635e1bda6SJim Ingham 
37*b9c1b51eSKate Stone bool SBExpressionOptions::GetCoerceResultToId() const {
3835e1bda6SJim Ingham   return m_opaque_ap->DoesCoerceToId();
3935e1bda6SJim Ingham }
4035e1bda6SJim Ingham 
41*b9c1b51eSKate Stone void SBExpressionOptions::SetCoerceResultToId(bool coerce) {
4235e1bda6SJim Ingham   m_opaque_ap->SetCoerceToId(coerce);
4335e1bda6SJim Ingham }
4435e1bda6SJim Ingham 
45*b9c1b51eSKate Stone bool SBExpressionOptions::GetUnwindOnError() const {
4635e1bda6SJim Ingham   return m_opaque_ap->DoesUnwindOnError();
4735e1bda6SJim Ingham }
4835e1bda6SJim Ingham 
49*b9c1b51eSKate Stone void SBExpressionOptions::SetUnwindOnError(bool unwind) {
5035e1bda6SJim Ingham   m_opaque_ap->SetUnwindOnError(unwind);
5135e1bda6SJim Ingham }
5235e1bda6SJim Ingham 
53*b9c1b51eSKate Stone bool SBExpressionOptions::GetIgnoreBreakpoints() const {
54184e9811SJim Ingham   return m_opaque_ap->DoesIgnoreBreakpoints();
55184e9811SJim Ingham }
56184e9811SJim Ingham 
57*b9c1b51eSKate Stone void SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) {
58184e9811SJim Ingham   m_opaque_ap->SetIgnoreBreakpoints(ignore);
59184e9811SJim Ingham }
60184e9811SJim Ingham 
61*b9c1b51eSKate Stone lldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const {
6235e1bda6SJim Ingham   return m_opaque_ap->GetUseDynamic();
6335e1bda6SJim Ingham }
6435e1bda6SJim Ingham 
65*b9c1b51eSKate Stone void SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) {
6635e1bda6SJim Ingham   m_opaque_ap->SetUseDynamic(dynamic);
6735e1bda6SJim Ingham }
6835e1bda6SJim Ingham 
69*b9c1b51eSKate Stone uint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const {
7035e1bda6SJim Ingham   return m_opaque_ap->GetTimeoutUsec();
7135e1bda6SJim Ingham }
7235e1bda6SJim Ingham 
73*b9c1b51eSKate Stone void SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) {
7435e1bda6SJim Ingham   m_opaque_ap->SetTimeoutUsec(timeout);
7535e1bda6SJim Ingham }
7635e1bda6SJim Ingham 
77*b9c1b51eSKate Stone uint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const {
78914f4e70SJim Ingham   return m_opaque_ap->GetOneThreadTimeoutUsec();
79914f4e70SJim Ingham }
80914f4e70SJim Ingham 
81*b9c1b51eSKate Stone void SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) {
82914f4e70SJim Ingham   m_opaque_ap->SetOneThreadTimeoutUsec(timeout);
83914f4e70SJim Ingham }
84914f4e70SJim Ingham 
85*b9c1b51eSKate Stone bool SBExpressionOptions::GetTryAllThreads() const {
866fbc48bcSJim Ingham   return m_opaque_ap->GetTryAllThreads();
8735e1bda6SJim Ingham }
8835e1bda6SJim Ingham 
89*b9c1b51eSKate Stone void SBExpressionOptions::SetTryAllThreads(bool run_others) {
906fbc48bcSJim Ingham   m_opaque_ap->SetTryAllThreads(run_others);
916fbc48bcSJim Ingham }
926fbc48bcSJim Ingham 
93*b9c1b51eSKate Stone bool SBExpressionOptions::GetStopOthers() const {
94286fb1efSJim Ingham   return m_opaque_ap->GetStopOthers();
95286fb1efSJim Ingham }
96286fb1efSJim Ingham 
97*b9c1b51eSKate Stone void SBExpressionOptions::SetStopOthers(bool run_others) {
98286fb1efSJim Ingham   m_opaque_ap->SetStopOthers(run_others);
99286fb1efSJim Ingham }
100286fb1efSJim Ingham 
101*b9c1b51eSKate Stone bool SBExpressionOptions::GetTrapExceptions() const {
1026fbc48bcSJim Ingham   return m_opaque_ap->GetTrapExceptions();
1036fbc48bcSJim Ingham }
1046fbc48bcSJim Ingham 
105*b9c1b51eSKate Stone void SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) {
1066fbc48bcSJim Ingham   m_opaque_ap->SetTrapExceptions(trap_exceptions);
10735e1bda6SJim Ingham }
10835e1bda6SJim Ingham 
109*b9c1b51eSKate Stone void SBExpressionOptions::SetLanguage(lldb::LanguageType language) {
110705b1809SJason Molenda   m_opaque_ap->SetLanguage(language);
111705b1809SJason Molenda }
112705b1809SJason Molenda 
113*b9c1b51eSKate Stone void SBExpressionOptions::SetCancelCallback(
114*b9c1b51eSKate Stone     lldb::ExpressionCancelCallback callback, void *baton) {
1151624a2d3SJim Ingham   m_opaque_ap->SetCancelCallback(callback, baton);
1161624a2d3SJim Ingham }
1171624a2d3SJim Ingham 
118*b9c1b51eSKate Stone bool SBExpressionOptions::GetGenerateDebugInfo() {
119205ca1e8SGreg Clayton   return m_opaque_ap->GetGenerateDebugInfo();
120205ca1e8SGreg Clayton }
121205ca1e8SGreg Clayton 
122*b9c1b51eSKate Stone void SBExpressionOptions::SetGenerateDebugInfo(bool b) {
123205ca1e8SGreg Clayton   return m_opaque_ap->SetGenerateDebugInfo(b);
124205ca1e8SGreg Clayton }
125205ca1e8SGreg Clayton 
126*b9c1b51eSKate Stone bool SBExpressionOptions::GetSuppressPersistentResult() {
1277ab079b6SJim Ingham   return m_opaque_ap->GetResultIsInternal();
1287ab079b6SJim Ingham }
1297ab079b6SJim Ingham 
130*b9c1b51eSKate Stone void SBExpressionOptions::SetSuppressPersistentResult(bool b) {
1317ab079b6SJim Ingham   return m_opaque_ap->SetResultIsInternal(b);
1327ab079b6SJim Ingham }
1337ab079b6SJim Ingham 
134*b9c1b51eSKate Stone const char *SBExpressionOptions::GetPrefix() const {
1354e1042e1SGreg Clayton   return m_opaque_ap->GetPrefix();
1364e1042e1SGreg Clayton }
1374e1042e1SGreg Clayton 
138*b9c1b51eSKate Stone void SBExpressionOptions::SetPrefix(const char *prefix) {
1394e1042e1SGreg Clayton   return m_opaque_ap->SetPrefix(prefix);
1404e1042e1SGreg Clayton }
1417ab079b6SJim Ingham 
142*b9c1b51eSKate Stone bool SBExpressionOptions::GetAutoApplyFixIts() {
143a1e541bfSJim Ingham   return m_opaque_ap->GetAutoApplyFixIts();
144a1e541bfSJim Ingham }
145a1e541bfSJim Ingham 
146*b9c1b51eSKate Stone void SBExpressionOptions::SetAutoApplyFixIts(bool b) {
147a1e541bfSJim Ingham   return m_opaque_ap->SetAutoApplyFixIts(b);
148a1e541bfSJim Ingham }
149a1e541bfSJim Ingham 
150*b9c1b51eSKate Stone bool SBExpressionOptions::GetTopLevel() {
151863fab69SSean Callanan   return m_opaque_ap->GetExecutionPolicy() == eExecutionPolicyTopLevel;
152863fab69SSean Callanan }
153863fab69SSean Callanan 
154*b9c1b51eSKate Stone void SBExpressionOptions::SetTopLevel(bool b) {
155*b9c1b51eSKate Stone   m_opaque_ap->SetExecutionPolicy(b ? eExecutionPolicyTopLevel
156*b9c1b51eSKate Stone                                     : m_opaque_ap->default_execution_policy);
157863fab69SSean Callanan }
158863fab69SSean Callanan 
159*b9c1b51eSKate Stone EvaluateExpressionOptions *SBExpressionOptions::get() const {
16035e1bda6SJim Ingham   return m_opaque_ap.get();
16135e1bda6SJim Ingham }
16235e1bda6SJim Ingham 
163*b9c1b51eSKate Stone EvaluateExpressionOptions &SBExpressionOptions::ref() const {
16435e1bda6SJim Ingham   return *(m_opaque_ap.get());
16535e1bda6SJim Ingham }
166