xref: /openbsd-src/gnu/llvm/lldb/source/API/SBExpressionOptions.cpp (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1dda28197Spatrick //===-- SBExpressionOptions.cpp -------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #include "lldb/API/SBExpressionOptions.h"
10061da546Spatrick #include "Utils.h"
11061da546Spatrick #include "lldb/API/SBStream.h"
12061da546Spatrick #include "lldb/Target/Target.h"
13*f6aab3d8Srobert #include "lldb/Utility/Instrumentation.h"
14061da546Spatrick 
15061da546Spatrick using namespace lldb;
16061da546Spatrick using namespace lldb_private;
17061da546Spatrick 
SBExpressionOptions()18061da546Spatrick SBExpressionOptions::SBExpressionOptions()
19061da546Spatrick     : m_opaque_up(new EvaluateExpressionOptions()) {
20*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
21061da546Spatrick }
22061da546Spatrick 
SBExpressionOptions(const SBExpressionOptions & rhs)23*f6aab3d8Srobert SBExpressionOptions::SBExpressionOptions(const SBExpressionOptions &rhs) {
24*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, rhs);
25061da546Spatrick 
26061da546Spatrick   m_opaque_up = clone(rhs.m_opaque_up);
27061da546Spatrick }
28061da546Spatrick 
29061da546Spatrick const SBExpressionOptions &SBExpressionOptions::
operator =(const SBExpressionOptions & rhs)30061da546Spatrick operator=(const SBExpressionOptions &rhs) {
31*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, rhs);
32061da546Spatrick 
33061da546Spatrick   if (this != &rhs)
34061da546Spatrick     m_opaque_up = clone(rhs.m_opaque_up);
35*f6aab3d8Srobert   return *this;
36061da546Spatrick }
37061da546Spatrick 
38dda28197Spatrick SBExpressionOptions::~SBExpressionOptions() = default;
39061da546Spatrick 
GetCoerceResultToId() const40061da546Spatrick bool SBExpressionOptions::GetCoerceResultToId() const {
41*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
42061da546Spatrick 
43061da546Spatrick   return m_opaque_up->DoesCoerceToId();
44061da546Spatrick }
45061da546Spatrick 
SetCoerceResultToId(bool coerce)46061da546Spatrick void SBExpressionOptions::SetCoerceResultToId(bool coerce) {
47*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, coerce);
48061da546Spatrick 
49061da546Spatrick   m_opaque_up->SetCoerceToId(coerce);
50061da546Spatrick }
51061da546Spatrick 
GetUnwindOnError() const52061da546Spatrick bool SBExpressionOptions::GetUnwindOnError() const {
53*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
54061da546Spatrick 
55061da546Spatrick   return m_opaque_up->DoesUnwindOnError();
56061da546Spatrick }
57061da546Spatrick 
SetUnwindOnError(bool unwind)58061da546Spatrick void SBExpressionOptions::SetUnwindOnError(bool unwind) {
59*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, unwind);
60061da546Spatrick 
61061da546Spatrick   m_opaque_up->SetUnwindOnError(unwind);
62061da546Spatrick }
63061da546Spatrick 
GetIgnoreBreakpoints() const64061da546Spatrick bool SBExpressionOptions::GetIgnoreBreakpoints() const {
65*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
66061da546Spatrick 
67061da546Spatrick   return m_opaque_up->DoesIgnoreBreakpoints();
68061da546Spatrick }
69061da546Spatrick 
SetIgnoreBreakpoints(bool ignore)70061da546Spatrick void SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) {
71*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, ignore);
72061da546Spatrick 
73061da546Spatrick   m_opaque_up->SetIgnoreBreakpoints(ignore);
74061da546Spatrick }
75061da546Spatrick 
GetFetchDynamicValue() const76061da546Spatrick lldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const {
77*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
78061da546Spatrick 
79061da546Spatrick   return m_opaque_up->GetUseDynamic();
80061da546Spatrick }
81061da546Spatrick 
SetFetchDynamicValue(lldb::DynamicValueType dynamic)82061da546Spatrick void SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) {
83*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, dynamic);
84061da546Spatrick 
85061da546Spatrick   m_opaque_up->SetUseDynamic(dynamic);
86061da546Spatrick }
87061da546Spatrick 
GetTimeoutInMicroSeconds() const88061da546Spatrick uint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const {
89*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
90061da546Spatrick 
91061da546Spatrick   return m_opaque_up->GetTimeout() ? m_opaque_up->GetTimeout()->count() : 0;
92061da546Spatrick }
93061da546Spatrick 
SetTimeoutInMicroSeconds(uint32_t timeout)94061da546Spatrick void SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) {
95*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, timeout);
96061da546Spatrick 
97*f6aab3d8Srobert   m_opaque_up->SetTimeout(timeout == 0 ? Timeout<std::micro>(std::nullopt)
98061da546Spatrick                                        : std::chrono::microseconds(timeout));
99061da546Spatrick }
100061da546Spatrick 
GetOneThreadTimeoutInMicroSeconds() const101061da546Spatrick uint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const {
102*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
103061da546Spatrick 
104061da546Spatrick   return m_opaque_up->GetOneThreadTimeout()
105061da546Spatrick              ? m_opaque_up->GetOneThreadTimeout()->count()
106061da546Spatrick              : 0;
107061da546Spatrick }
108061da546Spatrick 
SetOneThreadTimeoutInMicroSeconds(uint32_t timeout)109061da546Spatrick void SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) {
110*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, timeout);
111061da546Spatrick 
112061da546Spatrick   m_opaque_up->SetOneThreadTimeout(timeout == 0
113*f6aab3d8Srobert                                        ? Timeout<std::micro>(std::nullopt)
114061da546Spatrick                                        : std::chrono::microseconds(timeout));
115061da546Spatrick }
116061da546Spatrick 
GetTryAllThreads() const117061da546Spatrick bool SBExpressionOptions::GetTryAllThreads() const {
118*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
119061da546Spatrick 
120061da546Spatrick   return m_opaque_up->GetTryAllThreads();
121061da546Spatrick }
122061da546Spatrick 
SetTryAllThreads(bool run_others)123061da546Spatrick void SBExpressionOptions::SetTryAllThreads(bool run_others) {
124*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, run_others);
125061da546Spatrick 
126061da546Spatrick   m_opaque_up->SetTryAllThreads(run_others);
127061da546Spatrick }
128061da546Spatrick 
GetStopOthers() const129061da546Spatrick bool SBExpressionOptions::GetStopOthers() const {
130*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
131061da546Spatrick 
132061da546Spatrick   return m_opaque_up->GetStopOthers();
133061da546Spatrick }
134061da546Spatrick 
SetStopOthers(bool run_others)135061da546Spatrick void SBExpressionOptions::SetStopOthers(bool run_others) {
136*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, run_others);
137061da546Spatrick 
138061da546Spatrick   m_opaque_up->SetStopOthers(run_others);
139061da546Spatrick }
140061da546Spatrick 
GetTrapExceptions() const141061da546Spatrick bool SBExpressionOptions::GetTrapExceptions() const {
142*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
143061da546Spatrick 
144061da546Spatrick   return m_opaque_up->GetTrapExceptions();
145061da546Spatrick }
146061da546Spatrick 
SetTrapExceptions(bool trap_exceptions)147061da546Spatrick void SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) {
148*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, trap_exceptions);
149061da546Spatrick 
150061da546Spatrick   m_opaque_up->SetTrapExceptions(trap_exceptions);
151061da546Spatrick }
152061da546Spatrick 
SetLanguage(lldb::LanguageType language)153061da546Spatrick void SBExpressionOptions::SetLanguage(lldb::LanguageType language) {
154*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, language);
155061da546Spatrick 
156061da546Spatrick   m_opaque_up->SetLanguage(language);
157061da546Spatrick }
158061da546Spatrick 
SetCancelCallback(lldb::ExpressionCancelCallback callback,void * baton)159061da546Spatrick void SBExpressionOptions::SetCancelCallback(
160061da546Spatrick     lldb::ExpressionCancelCallback callback, void *baton) {
161*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, callback, baton);
162061da546Spatrick 
163061da546Spatrick   m_opaque_up->SetCancelCallback(callback, baton);
164061da546Spatrick }
165061da546Spatrick 
GetGenerateDebugInfo()166061da546Spatrick bool SBExpressionOptions::GetGenerateDebugInfo() {
167*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
168061da546Spatrick 
169061da546Spatrick   return m_opaque_up->GetGenerateDebugInfo();
170061da546Spatrick }
171061da546Spatrick 
SetGenerateDebugInfo(bool b)172061da546Spatrick void SBExpressionOptions::SetGenerateDebugInfo(bool b) {
173*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, b);
174061da546Spatrick 
175061da546Spatrick   return m_opaque_up->SetGenerateDebugInfo(b);
176061da546Spatrick }
177061da546Spatrick 
GetSuppressPersistentResult()178061da546Spatrick bool SBExpressionOptions::GetSuppressPersistentResult() {
179*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
180061da546Spatrick 
181061da546Spatrick   return m_opaque_up->GetResultIsInternal();
182061da546Spatrick }
183061da546Spatrick 
SetSuppressPersistentResult(bool b)184061da546Spatrick void SBExpressionOptions::SetSuppressPersistentResult(bool b) {
185*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, b);
186061da546Spatrick 
187061da546Spatrick   return m_opaque_up->SetResultIsInternal(b);
188061da546Spatrick }
189061da546Spatrick 
GetPrefix() const190061da546Spatrick const char *SBExpressionOptions::GetPrefix() const {
191*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
192061da546Spatrick 
193061da546Spatrick   return m_opaque_up->GetPrefix();
194061da546Spatrick }
195061da546Spatrick 
SetPrefix(const char * prefix)196061da546Spatrick void SBExpressionOptions::SetPrefix(const char *prefix) {
197*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, prefix);
198061da546Spatrick 
199061da546Spatrick   return m_opaque_up->SetPrefix(prefix);
200061da546Spatrick }
201061da546Spatrick 
GetAutoApplyFixIts()202061da546Spatrick bool SBExpressionOptions::GetAutoApplyFixIts() {
203*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
204061da546Spatrick 
205061da546Spatrick   return m_opaque_up->GetAutoApplyFixIts();
206061da546Spatrick }
207061da546Spatrick 
SetAutoApplyFixIts(bool b)208061da546Spatrick void SBExpressionOptions::SetAutoApplyFixIts(bool b) {
209*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, b);
210061da546Spatrick 
211061da546Spatrick   return m_opaque_up->SetAutoApplyFixIts(b);
212061da546Spatrick }
213061da546Spatrick 
GetRetriesWithFixIts()214dda28197Spatrick uint64_t SBExpressionOptions::GetRetriesWithFixIts() {
215*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
216dda28197Spatrick 
217dda28197Spatrick   return m_opaque_up->GetRetriesWithFixIts();
218dda28197Spatrick }
219dda28197Spatrick 
SetRetriesWithFixIts(uint64_t retries)220dda28197Spatrick void SBExpressionOptions::SetRetriesWithFixIts(uint64_t retries) {
221*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, retries);
222dda28197Spatrick 
223dda28197Spatrick   return m_opaque_up->SetRetriesWithFixIts(retries);
224dda28197Spatrick }
225dda28197Spatrick 
GetTopLevel()226061da546Spatrick bool SBExpressionOptions::GetTopLevel() {
227*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
228061da546Spatrick 
229061da546Spatrick   return m_opaque_up->GetExecutionPolicy() == eExecutionPolicyTopLevel;
230061da546Spatrick }
231061da546Spatrick 
SetTopLevel(bool b)232061da546Spatrick void SBExpressionOptions::SetTopLevel(bool b) {
233*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, b);
234061da546Spatrick 
235061da546Spatrick   m_opaque_up->SetExecutionPolicy(b ? eExecutionPolicyTopLevel
236061da546Spatrick                                     : m_opaque_up->default_execution_policy);
237061da546Spatrick }
238061da546Spatrick 
GetAllowJIT()239061da546Spatrick bool SBExpressionOptions::GetAllowJIT() {
240*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
241061da546Spatrick 
242061da546Spatrick   return m_opaque_up->GetExecutionPolicy() != eExecutionPolicyNever;
243061da546Spatrick }
244061da546Spatrick 
SetAllowJIT(bool allow)245061da546Spatrick void SBExpressionOptions::SetAllowJIT(bool allow) {
246*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, allow);
247061da546Spatrick 
248061da546Spatrick   m_opaque_up->SetExecutionPolicy(allow ? m_opaque_up->default_execution_policy
249061da546Spatrick                                         : eExecutionPolicyNever);
250061da546Spatrick }
251061da546Spatrick 
get() const252061da546Spatrick EvaluateExpressionOptions *SBExpressionOptions::get() const {
253061da546Spatrick   return m_opaque_up.get();
254061da546Spatrick }
255061da546Spatrick 
ref() const256061da546Spatrick EvaluateExpressionOptions &SBExpressionOptions::ref() const {
257*f6aab3d8Srobert   return *m_opaque_up;
258061da546Spatrick }
259