blob: 76cec876a216168f66f150222d13b71c6fc3378e [file] [log] [blame]
Kate Stoneb9c1b512016-09-06 20:57:50 +00001//===-- SBExpressionOptions.cpp ---------------------------------------------*-
2//C++ -*-===//
Jim Ingham35e1bda2012-10-16 21:41:58 +00003//
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/SBExpressionOptions.h"
12#include "lldb/API/SBStream.h"
13
14#include "lldb/Target/Target.h"
15
16using namespace lldb;
17using namespace lldb_private;
18
Kate Stoneb9c1b512016-09-06 20:57:50 +000019SBExpressionOptions::SBExpressionOptions()
20 : m_opaque_ap(new EvaluateExpressionOptions()) {}
Jim Ingham35e1bda2012-10-16 21:41:58 +000021
Kate Stoneb9c1b512016-09-06 20:57:50 +000022SBExpressionOptions::SBExpressionOptions(const SBExpressionOptions &rhs) {
23 m_opaque_ap.reset(new EvaluateExpressionOptions());
24 *(m_opaque_ap.get()) = rhs.ref();
Jim Ingham35e1bda2012-10-16 21:41:58 +000025}
26
Kate Stoneb9c1b512016-09-06 20:57:50 +000027const SBExpressionOptions &SBExpressionOptions::
28operator=(const SBExpressionOptions &rhs) {
29 if (this != &rhs) {
30 this->ref() = rhs.ref();
31 }
32 return *this;
Jim Ingham35e1bda2012-10-16 21:41:58 +000033}
34
Kate Stoneb9c1b512016-09-06 20:57:50 +000035SBExpressionOptions::~SBExpressionOptions() {}
36
37bool SBExpressionOptions::GetCoerceResultToId() const {
38 return m_opaque_ap->DoesCoerceToId();
Jim Ingham35e1bda2012-10-16 21:41:58 +000039}
40
Kate Stoneb9c1b512016-09-06 20:57:50 +000041void SBExpressionOptions::SetCoerceResultToId(bool coerce) {
42 m_opaque_ap->SetCoerceToId(coerce);
Jim Ingham35e1bda2012-10-16 21:41:58 +000043}
44
Kate Stoneb9c1b512016-09-06 20:57:50 +000045bool SBExpressionOptions::GetUnwindOnError() const {
46 return m_opaque_ap->DoesUnwindOnError();
Jim Ingham35e1bda2012-10-16 21:41:58 +000047}
48
Kate Stoneb9c1b512016-09-06 20:57:50 +000049void SBExpressionOptions::SetUnwindOnError(bool unwind) {
50 m_opaque_ap->SetUnwindOnError(unwind);
Jim Ingham35e1bda2012-10-16 21:41:58 +000051}
52
Kate Stoneb9c1b512016-09-06 20:57:50 +000053bool SBExpressionOptions::GetIgnoreBreakpoints() const {
54 return m_opaque_ap->DoesIgnoreBreakpoints();
Jim Ingham35e1bda2012-10-16 21:41:58 +000055}
56
Kate Stoneb9c1b512016-09-06 20:57:50 +000057void SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) {
58 m_opaque_ap->SetIgnoreBreakpoints(ignore);
Jim Ingham35e1bda2012-10-16 21:41:58 +000059}
60
Kate Stoneb9c1b512016-09-06 20:57:50 +000061lldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const {
62 return m_opaque_ap->GetUseDynamic();
Jim Ingham184e9812013-01-15 02:47:48 +000063}
64
Kate Stoneb9c1b512016-09-06 20:57:50 +000065void SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) {
66 m_opaque_ap->SetUseDynamic(dynamic);
Jim Ingham184e9812013-01-15 02:47:48 +000067}
68
Kate Stoneb9c1b512016-09-06 20:57:50 +000069uint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const {
Pavel Labath43d35412016-12-06 11:24:51 +000070 return m_opaque_ap->GetTimeout() ? m_opaque_ap->GetTimeout()->count() : 0;
Jim Ingham35e1bda2012-10-16 21:41:58 +000071}
72
Kate Stoneb9c1b512016-09-06 20:57:50 +000073void SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) {
Pavel Labath43d35412016-12-06 11:24:51 +000074 m_opaque_ap->SetTimeout(timeout == 0 ? Timeout<std::micro>(llvm::None)
75 : std::chrono::microseconds(timeout));
Jim Ingham35e1bda2012-10-16 21:41:58 +000076}
77
Kate Stoneb9c1b512016-09-06 20:57:50 +000078uint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const {
Pavel Labath43d35412016-12-06 11:24:51 +000079 return m_opaque_ap->GetOneThreadTimeout() ? m_opaque_ap->GetOneThreadTimeout()->count() : 0;
Jim Ingham35e1bda2012-10-16 21:41:58 +000080}
81
Kate Stoneb9c1b512016-09-06 20:57:50 +000082void SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) {
Pavel Labath43d35412016-12-06 11:24:51 +000083 m_opaque_ap->SetOneThreadTimeout(timeout == 0
84 ? Timeout<std::micro>(llvm::None)
85 : std::chrono::microseconds(timeout));
Jim Ingham35e1bda2012-10-16 21:41:58 +000086}
87
Kate Stoneb9c1b512016-09-06 20:57:50 +000088bool SBExpressionOptions::GetTryAllThreads() const {
89 return m_opaque_ap->GetTryAllThreads();
Jim Ingham914f4e72014-03-28 21:58:28 +000090}
91
Kate Stoneb9c1b512016-09-06 20:57:50 +000092void SBExpressionOptions::SetTryAllThreads(bool run_others) {
93 m_opaque_ap->SetTryAllThreads(run_others);
Jim Ingham914f4e72014-03-28 21:58:28 +000094}
95
Kate Stoneb9c1b512016-09-06 20:57:50 +000096bool SBExpressionOptions::GetStopOthers() const {
97 return m_opaque_ap->GetStopOthers();
Jim Ingham35e1bda2012-10-16 21:41:58 +000098}
99
Kate Stoneb9c1b512016-09-06 20:57:50 +0000100void SBExpressionOptions::SetStopOthers(bool run_others) {
101 m_opaque_ap->SetStopOthers(run_others);
Jim Ingham6fbc48b2013-11-07 00:11:47 +0000102}
103
Kate Stoneb9c1b512016-09-06 20:57:50 +0000104bool SBExpressionOptions::GetTrapExceptions() const {
105 return m_opaque_ap->GetTrapExceptions();
Jim Ingham286fb1e2014-02-28 02:52:06 +0000106}
107
Kate Stoneb9c1b512016-09-06 20:57:50 +0000108void SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) {
109 m_opaque_ap->SetTrapExceptions(trap_exceptions);
Jim Ingham286fb1e2014-02-28 02:52:06 +0000110}
111
Kate Stoneb9c1b512016-09-06 20:57:50 +0000112void SBExpressionOptions::SetLanguage(lldb::LanguageType language) {
113 m_opaque_ap->SetLanguage(language);
Jim Ingham6fbc48b2013-11-07 00:11:47 +0000114}
115
Kate Stoneb9c1b512016-09-06 20:57:50 +0000116void SBExpressionOptions::SetCancelCallback(
117 lldb::ExpressionCancelCallback callback, void *baton) {
118 m_opaque_ap->SetCancelCallback(callback, baton);
Jim Ingham35e1bda2012-10-16 21:41:58 +0000119}
120
Kate Stoneb9c1b512016-09-06 20:57:50 +0000121bool SBExpressionOptions::GetGenerateDebugInfo() {
122 return m_opaque_ap->GetGenerateDebugInfo();
Jason Molenda705b1802014-06-13 02:37:02 +0000123}
124
Kate Stoneb9c1b512016-09-06 20:57:50 +0000125void SBExpressionOptions::SetGenerateDebugInfo(bool b) {
126 return m_opaque_ap->SetGenerateDebugInfo(b);
Jim Ingham1624a2d2014-05-05 02:26:40 +0000127}
128
Kate Stoneb9c1b512016-09-06 20:57:50 +0000129bool SBExpressionOptions::GetSuppressPersistentResult() {
130 return m_opaque_ap->GetResultIsInternal();
Greg Clayton205ca1e2014-07-11 01:03:57 +0000131}
132
Kate Stoneb9c1b512016-09-06 20:57:50 +0000133void SBExpressionOptions::SetSuppressPersistentResult(bool b) {
134 return m_opaque_ap->SetResultIsInternal(b);
Greg Clayton205ca1e2014-07-11 01:03:57 +0000135}
136
Kate Stoneb9c1b512016-09-06 20:57:50 +0000137const char *SBExpressionOptions::GetPrefix() const {
138 return m_opaque_ap->GetPrefix();
Jim Ingham7ab079b2014-08-08 21:45:36 +0000139}
140
Kate Stoneb9c1b512016-09-06 20:57:50 +0000141void SBExpressionOptions::SetPrefix(const char *prefix) {
142 return m_opaque_ap->SetPrefix(prefix);
Jim Ingham7ab079b2014-08-08 21:45:36 +0000143}
144
Kate Stoneb9c1b512016-09-06 20:57:50 +0000145bool SBExpressionOptions::GetAutoApplyFixIts() {
146 return m_opaque_ap->GetAutoApplyFixIts();
Greg Clayton4e1042e2015-05-27 22:32:39 +0000147}
148
Kate Stoneb9c1b512016-09-06 20:57:50 +0000149void SBExpressionOptions::SetAutoApplyFixIts(bool b) {
150 return m_opaque_ap->SetAutoApplyFixIts(b);
Greg Clayton4e1042e2015-05-27 22:32:39 +0000151}
Jim Ingham7ab079b2014-08-08 21:45:36 +0000152
Kate Stoneb9c1b512016-09-06 20:57:50 +0000153bool SBExpressionOptions::GetTopLevel() {
154 return m_opaque_ap->GetExecutionPolicy() == eExecutionPolicyTopLevel;
Jim Inghama1e541b2016-03-25 01:57:14 +0000155}
156
Kate Stoneb9c1b512016-09-06 20:57:50 +0000157void SBExpressionOptions::SetTopLevel(bool b) {
158 m_opaque_ap->SetExecutionPolicy(b ? eExecutionPolicyTopLevel
159 : m_opaque_ap->default_execution_policy);
Jim Inghama1e541b2016-03-25 01:57:14 +0000160}
161
Jim Inghamab639982018-11-02 23:42:40 +0000162bool SBExpressionOptions::GetAllowJIT() {
163 return m_opaque_ap->GetExecutionPolicy() != eExecutionPolicyNever;
164}
165
166void SBExpressionOptions::SetAllowJIT(bool allow) {
167 m_opaque_ap->SetExecutionPolicy(allow ? m_opaque_ap->default_execution_policy
168 : eExecutionPolicyNever);
169}
170
Kate Stoneb9c1b512016-09-06 20:57:50 +0000171EvaluateExpressionOptions *SBExpressionOptions::get() const {
172 return m_opaque_ap.get();
Sean Callanan863fab62016-03-28 21:20:05 +0000173}
174
Kate Stoneb9c1b512016-09-06 20:57:50 +0000175EvaluateExpressionOptions &SBExpressionOptions::ref() const {
176 return *(m_opaque_ap.get());
Jim Ingham35e1bda2012-10-16 21:41:58 +0000177}