1b9c1b51eSKate Stone //===-- SBExpressionOptions.cpp ---------------------------------------------*-
2b9c1b51eSKate 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 
19b9c1b51eSKate Stone SBExpressionOptions::SBExpressionOptions()
20b9c1b51eSKate Stone     : m_opaque_ap(new EvaluateExpressionOptions()) {}
2135e1bda6SJim Ingham 
22b9c1b51eSKate 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 
27b9c1b51eSKate Stone const SBExpressionOptions &SBExpressionOptions::
28b9c1b51eSKate Stone operator=(const SBExpressionOptions &rhs) {
29b9c1b51eSKate Stone   if (this != &rhs) {
3035e1bda6SJim Ingham     this->ref() = rhs.ref();
3135e1bda6SJim Ingham   }
3235e1bda6SJim Ingham   return *this;
3335e1bda6SJim Ingham }
3435e1bda6SJim Ingham 
35b9c1b51eSKate Stone SBExpressionOptions::~SBExpressionOptions() {}
3635e1bda6SJim Ingham 
37b9c1b51eSKate Stone bool SBExpressionOptions::GetCoerceResultToId() const {
3835e1bda6SJim Ingham   return m_opaque_ap->DoesCoerceToId();
3935e1bda6SJim Ingham }
4035e1bda6SJim Ingham 
41b9c1b51eSKate Stone void SBExpressionOptions::SetCoerceResultToId(bool coerce) {
4235e1bda6SJim Ingham   m_opaque_ap->SetCoerceToId(coerce);
4335e1bda6SJim Ingham }
4435e1bda6SJim Ingham 
45b9c1b51eSKate Stone bool SBExpressionOptions::GetUnwindOnError() const {
4635e1bda6SJim Ingham   return m_opaque_ap->DoesUnwindOnError();
4735e1bda6SJim Ingham }
4835e1bda6SJim Ingham 
49b9c1b51eSKate Stone void SBExpressionOptions::SetUnwindOnError(bool unwind) {
5035e1bda6SJim Ingham   m_opaque_ap->SetUnwindOnError(unwind);
5135e1bda6SJim Ingham }
5235e1bda6SJim Ingham 
53b9c1b51eSKate Stone bool SBExpressionOptions::GetIgnoreBreakpoints() const {
54184e9811SJim Ingham   return m_opaque_ap->DoesIgnoreBreakpoints();
55184e9811SJim Ingham }
56184e9811SJim Ingham 
57b9c1b51eSKate Stone void SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) {
58184e9811SJim Ingham   m_opaque_ap->SetIgnoreBreakpoints(ignore);
59184e9811SJim Ingham }
60184e9811SJim Ingham 
61b9c1b51eSKate Stone lldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const {
6235e1bda6SJim Ingham   return m_opaque_ap->GetUseDynamic();
6335e1bda6SJim Ingham }
6435e1bda6SJim Ingham 
65b9c1b51eSKate Stone void SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) {
6635e1bda6SJim Ingham   m_opaque_ap->SetUseDynamic(dynamic);
6735e1bda6SJim Ingham }
6835e1bda6SJim Ingham 
69b9c1b51eSKate Stone uint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const {
7043d35418SPavel Labath   return m_opaque_ap->GetTimeout() ? m_opaque_ap->GetTimeout()->count() : 0;
7135e1bda6SJim Ingham }
7235e1bda6SJim Ingham 
73b9c1b51eSKate Stone void SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) {
7443d35418SPavel Labath   m_opaque_ap->SetTimeout(timeout == 0 ? Timeout<std::micro>(llvm::None)
7543d35418SPavel Labath                                        : std::chrono::microseconds(timeout));
7635e1bda6SJim Ingham }
7735e1bda6SJim Ingham 
78b9c1b51eSKate Stone uint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const {
7943d35418SPavel Labath   return m_opaque_ap->GetOneThreadTimeout() ? m_opaque_ap->GetOneThreadTimeout()->count() : 0;
80914f4e70SJim Ingham }
81914f4e70SJim Ingham 
82b9c1b51eSKate Stone void SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) {
8343d35418SPavel Labath   m_opaque_ap->SetOneThreadTimeout(timeout == 0
8443d35418SPavel Labath                                        ? Timeout<std::micro>(llvm::None)
8543d35418SPavel Labath                                        : std::chrono::microseconds(timeout));
86914f4e70SJim Ingham }
87914f4e70SJim Ingham 
88b9c1b51eSKate Stone bool SBExpressionOptions::GetTryAllThreads() const {
896fbc48bcSJim Ingham   return m_opaque_ap->GetTryAllThreads();
9035e1bda6SJim Ingham }
9135e1bda6SJim Ingham 
92b9c1b51eSKate Stone void SBExpressionOptions::SetTryAllThreads(bool run_others) {
936fbc48bcSJim Ingham   m_opaque_ap->SetTryAllThreads(run_others);
946fbc48bcSJim Ingham }
956fbc48bcSJim Ingham 
96b9c1b51eSKate Stone bool SBExpressionOptions::GetStopOthers() const {
97286fb1efSJim Ingham   return m_opaque_ap->GetStopOthers();
98286fb1efSJim Ingham }
99286fb1efSJim Ingham 
100b9c1b51eSKate Stone void SBExpressionOptions::SetStopOthers(bool run_others) {
101286fb1efSJim Ingham   m_opaque_ap->SetStopOthers(run_others);
102286fb1efSJim Ingham }
103286fb1efSJim Ingham 
104b9c1b51eSKate Stone bool SBExpressionOptions::GetTrapExceptions() const {
1056fbc48bcSJim Ingham   return m_opaque_ap->GetTrapExceptions();
1066fbc48bcSJim Ingham }
1076fbc48bcSJim Ingham 
108b9c1b51eSKate Stone void SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) {
1096fbc48bcSJim Ingham   m_opaque_ap->SetTrapExceptions(trap_exceptions);
11035e1bda6SJim Ingham }
11135e1bda6SJim Ingham 
112b9c1b51eSKate Stone void SBExpressionOptions::SetLanguage(lldb::LanguageType language) {
113705b1809SJason Molenda   m_opaque_ap->SetLanguage(language);
114705b1809SJason Molenda }
115705b1809SJason Molenda 
116b9c1b51eSKate Stone void SBExpressionOptions::SetCancelCallback(
117b9c1b51eSKate Stone     lldb::ExpressionCancelCallback callback, void *baton) {
1181624a2d3SJim Ingham   m_opaque_ap->SetCancelCallback(callback, baton);
1191624a2d3SJim Ingham }
1201624a2d3SJim Ingham 
121b9c1b51eSKate Stone bool SBExpressionOptions::GetGenerateDebugInfo() {
122205ca1e8SGreg Clayton   return m_opaque_ap->GetGenerateDebugInfo();
123205ca1e8SGreg Clayton }
124205ca1e8SGreg Clayton 
125b9c1b51eSKate Stone void SBExpressionOptions::SetGenerateDebugInfo(bool b) {
126205ca1e8SGreg Clayton   return m_opaque_ap->SetGenerateDebugInfo(b);
127205ca1e8SGreg Clayton }
128205ca1e8SGreg Clayton 
129b9c1b51eSKate Stone bool SBExpressionOptions::GetSuppressPersistentResult() {
1307ab079b6SJim Ingham   return m_opaque_ap->GetResultIsInternal();
1317ab079b6SJim Ingham }
1327ab079b6SJim Ingham 
133b9c1b51eSKate Stone void SBExpressionOptions::SetSuppressPersistentResult(bool b) {
1347ab079b6SJim Ingham   return m_opaque_ap->SetResultIsInternal(b);
1357ab079b6SJim Ingham }
1367ab079b6SJim Ingham 
137b9c1b51eSKate Stone const char *SBExpressionOptions::GetPrefix() const {
1384e1042e1SGreg Clayton   return m_opaque_ap->GetPrefix();
1394e1042e1SGreg Clayton }
1404e1042e1SGreg Clayton 
141b9c1b51eSKate Stone void SBExpressionOptions::SetPrefix(const char *prefix) {
1424e1042e1SGreg Clayton   return m_opaque_ap->SetPrefix(prefix);
1434e1042e1SGreg Clayton }
1447ab079b6SJim Ingham 
145b9c1b51eSKate Stone bool SBExpressionOptions::GetAutoApplyFixIts() {
146a1e541bfSJim Ingham   return m_opaque_ap->GetAutoApplyFixIts();
147a1e541bfSJim Ingham }
148a1e541bfSJim Ingham 
149b9c1b51eSKate Stone void SBExpressionOptions::SetAutoApplyFixIts(bool b) {
150a1e541bfSJim Ingham   return m_opaque_ap->SetAutoApplyFixIts(b);
151a1e541bfSJim Ingham }
152a1e541bfSJim Ingham 
153b9c1b51eSKate Stone bool SBExpressionOptions::GetTopLevel() {
154863fab69SSean Callanan   return m_opaque_ap->GetExecutionPolicy() == eExecutionPolicyTopLevel;
155863fab69SSean Callanan }
156863fab69SSean Callanan 
157b9c1b51eSKate Stone void SBExpressionOptions::SetTopLevel(bool b) {
158b9c1b51eSKate Stone   m_opaque_ap->SetExecutionPolicy(b ? eExecutionPolicyTopLevel
159b9c1b51eSKate Stone                                     : m_opaque_ap->default_execution_policy);
160863fab69SSean Callanan }
161863fab69SSean Callanan 
162*ab639986SJim Ingham bool SBExpressionOptions::GetAllowJIT() {
163*ab639986SJim Ingham   return m_opaque_ap->GetExecutionPolicy() != eExecutionPolicyNever;
164*ab639986SJim Ingham }
165*ab639986SJim Ingham 
166*ab639986SJim Ingham void SBExpressionOptions::SetAllowJIT(bool allow) {
167*ab639986SJim Ingham   m_opaque_ap->SetExecutionPolicy(allow ? m_opaque_ap->default_execution_policy
168*ab639986SJim Ingham                                     : eExecutionPolicyNever);
169*ab639986SJim Ingham }
170*ab639986SJim Ingham 
171b9c1b51eSKate Stone EvaluateExpressionOptions *SBExpressionOptions::get() const {
17235e1bda6SJim Ingham   return m_opaque_ap.get();
17335e1bda6SJim Ingham }
17435e1bda6SJim Ingham 
175b9c1b51eSKate Stone EvaluateExpressionOptions &SBExpressionOptions::ref() const {
17635e1bda6SJim Ingham   return *(m_opaque_ap.get());
17735e1bda6SJim Ingham }
178