266 lines · cpp
1//===-- SBExpressionOptions.cpp -------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/API/SBExpressionOptions.h"10#include "Utils.h"11#include "lldb/API/SBStream.h"12#include "lldb/Target/Target.h"13#include "lldb/Utility/Instrumentation.h"14 15using namespace lldb;16using namespace lldb_private;17 18SBExpressionOptions::SBExpressionOptions()19 : m_opaque_up(new EvaluateExpressionOptions()) {20 LLDB_INSTRUMENT_VA(this);21}22 23SBExpressionOptions::SBExpressionOptions(const SBExpressionOptions &rhs) {24 LLDB_INSTRUMENT_VA(this, rhs);25 26 m_opaque_up = clone(rhs.m_opaque_up);27}28 29const SBExpressionOptions &SBExpressionOptions::30operator=(const SBExpressionOptions &rhs) {31 LLDB_INSTRUMENT_VA(this, rhs);32 33 if (this != &rhs)34 m_opaque_up = clone(rhs.m_opaque_up);35 return *this;36}37 38SBExpressionOptions::~SBExpressionOptions() = default;39 40bool SBExpressionOptions::GetCoerceResultToId() const {41 LLDB_INSTRUMENT_VA(this);42 43 return m_opaque_up->DoesCoerceToId();44}45 46void SBExpressionOptions::SetCoerceResultToId(bool coerce) {47 LLDB_INSTRUMENT_VA(this, coerce);48 49 m_opaque_up->SetCoerceToId(coerce);50}51 52bool SBExpressionOptions::GetUnwindOnError() const {53 LLDB_INSTRUMENT_VA(this);54 55 return m_opaque_up->DoesUnwindOnError();56}57 58void SBExpressionOptions::SetUnwindOnError(bool unwind) {59 LLDB_INSTRUMENT_VA(this, unwind);60 61 m_opaque_up->SetUnwindOnError(unwind);62}63 64bool SBExpressionOptions::GetIgnoreBreakpoints() const {65 LLDB_INSTRUMENT_VA(this);66 67 return m_opaque_up->DoesIgnoreBreakpoints();68}69 70void SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) {71 LLDB_INSTRUMENT_VA(this, ignore);72 73 m_opaque_up->SetIgnoreBreakpoints(ignore);74}75 76lldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const {77 LLDB_INSTRUMENT_VA(this);78 79 return m_opaque_up->GetUseDynamic();80}81 82void SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) {83 LLDB_INSTRUMENT_VA(this, dynamic);84 85 m_opaque_up->SetUseDynamic(dynamic);86}87 88uint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const {89 LLDB_INSTRUMENT_VA(this);90 91 return m_opaque_up->GetTimeout() ? m_opaque_up->GetTimeout()->count() : 0;92}93 94void SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) {95 LLDB_INSTRUMENT_VA(this, timeout);96 97 m_opaque_up->SetTimeout(timeout == 0 ? Timeout<std::micro>(std::nullopt)98 : std::chrono::microseconds(timeout));99}100 101uint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const {102 LLDB_INSTRUMENT_VA(this);103 104 return m_opaque_up->GetOneThreadTimeout()105 ? m_opaque_up->GetOneThreadTimeout()->count()106 : 0;107}108 109void SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) {110 LLDB_INSTRUMENT_VA(this, timeout);111 112 m_opaque_up->SetOneThreadTimeout(timeout == 0113 ? Timeout<std::micro>(std::nullopt)114 : std::chrono::microseconds(timeout));115}116 117bool SBExpressionOptions::GetTryAllThreads() const {118 LLDB_INSTRUMENT_VA(this);119 120 return m_opaque_up->GetTryAllThreads();121}122 123void SBExpressionOptions::SetTryAllThreads(bool run_others) {124 LLDB_INSTRUMENT_VA(this, run_others);125 126 m_opaque_up->SetTryAllThreads(run_others);127}128 129bool SBExpressionOptions::GetStopOthers() const {130 LLDB_INSTRUMENT_VA(this);131 132 return m_opaque_up->GetStopOthers();133}134 135void SBExpressionOptions::SetStopOthers(bool run_others) {136 LLDB_INSTRUMENT_VA(this, run_others);137 138 m_opaque_up->SetStopOthers(run_others);139}140 141bool SBExpressionOptions::GetTrapExceptions() const {142 LLDB_INSTRUMENT_VA(this);143 144 return m_opaque_up->GetTrapExceptions();145}146 147void SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) {148 LLDB_INSTRUMENT_VA(this, trap_exceptions);149 150 m_opaque_up->SetTrapExceptions(trap_exceptions);151}152 153void SBExpressionOptions::SetLanguage(lldb::LanguageType language) {154 LLDB_INSTRUMENT_VA(this, language);155 156 m_opaque_up->SetLanguage(language);157}158 159void SBExpressionOptions::SetLanguage(lldb::SBSourceLanguageName name,160 uint32_t version) {161 LLDB_INSTRUMENT_VA(this, name, version);162 163 m_opaque_up->SetLanguage(name, version);164}165 166void SBExpressionOptions::SetCancelCallback(167 lldb::ExpressionCancelCallback callback, void *baton) {168 LLDB_INSTRUMENT_VA(this, callback, baton);169 170 m_opaque_up->SetCancelCallback(callback, baton);171}172 173bool SBExpressionOptions::GetGenerateDebugInfo() {174 LLDB_INSTRUMENT_VA(this);175 176 return m_opaque_up->GetGenerateDebugInfo();177}178 179void SBExpressionOptions::SetGenerateDebugInfo(bool b) {180 LLDB_INSTRUMENT_VA(this, b);181 182 return m_opaque_up->SetGenerateDebugInfo(b);183}184 185bool SBExpressionOptions::GetSuppressPersistentResult() {186 LLDB_INSTRUMENT_VA(this);187 188 return m_opaque_up->GetSuppressPersistentResult();189}190 191void SBExpressionOptions::SetSuppressPersistentResult(bool b) {192 LLDB_INSTRUMENT_VA(this, b);193 194 return m_opaque_up->SetSuppressPersistentResult(b);195}196 197const char *SBExpressionOptions::GetPrefix() const {198 LLDB_INSTRUMENT_VA(this);199 200 return ConstString(m_opaque_up->GetPrefix()).GetCString();201}202 203void SBExpressionOptions::SetPrefix(const char *prefix) {204 LLDB_INSTRUMENT_VA(this, prefix);205 206 return m_opaque_up->SetPrefix(prefix);207}208 209bool SBExpressionOptions::GetAutoApplyFixIts() {210 LLDB_INSTRUMENT_VA(this);211 212 return m_opaque_up->GetAutoApplyFixIts();213}214 215void SBExpressionOptions::SetAutoApplyFixIts(bool b) {216 LLDB_INSTRUMENT_VA(this, b);217 218 return m_opaque_up->SetAutoApplyFixIts(b);219}220 221uint64_t SBExpressionOptions::GetRetriesWithFixIts() {222 LLDB_INSTRUMENT_VA(this);223 224 return m_opaque_up->GetRetriesWithFixIts();225}226 227void SBExpressionOptions::SetRetriesWithFixIts(uint64_t retries) {228 LLDB_INSTRUMENT_VA(this, retries);229 230 return m_opaque_up->SetRetriesWithFixIts(retries);231}232 233bool SBExpressionOptions::GetTopLevel() {234 LLDB_INSTRUMENT_VA(this);235 236 return m_opaque_up->GetExecutionPolicy() == eExecutionPolicyTopLevel;237}238 239void SBExpressionOptions::SetTopLevel(bool b) {240 LLDB_INSTRUMENT_VA(this, b);241 242 m_opaque_up->SetExecutionPolicy(b ? eExecutionPolicyTopLevel243 : m_opaque_up->default_execution_policy);244}245 246bool SBExpressionOptions::GetAllowJIT() {247 LLDB_INSTRUMENT_VA(this);248 249 return m_opaque_up->GetExecutionPolicy() != eExecutionPolicyNever;250}251 252void SBExpressionOptions::SetAllowJIT(bool allow) {253 LLDB_INSTRUMENT_VA(this, allow);254 255 m_opaque_up->SetExecutionPolicy(allow ? m_opaque_up->default_execution_policy256 : eExecutionPolicyNever);257}258 259EvaluateExpressionOptions *SBExpressionOptions::get() const {260 return m_opaque_up.get();261}262 263EvaluateExpressionOptions &SBExpressionOptions::ref() const {264 return *m_opaque_up;265}266