1b9c1b51eSKate Stone //===-- SBExpressionOptions.cpp ---------------------------------------------*- 2b9c1b51eSKate Stone //C++ -*-===// 335e1bda6SJim Ingham // 4*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 6*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 735e1bda6SJim Ingham // 835e1bda6SJim Ingham //===----------------------------------------------------------------------===// 935e1bda6SJim Ingham 1035e1bda6SJim Ingham #include "lldb/API/SBExpressionOptions.h" 1135e1bda6SJim Ingham #include "lldb/API/SBStream.h" 1235e1bda6SJim Ingham 1335e1bda6SJim Ingham #include "lldb/Target/Target.h" 1435e1bda6SJim Ingham 1535e1bda6SJim Ingham using namespace lldb; 1635e1bda6SJim Ingham using namespace lldb_private; 1735e1bda6SJim Ingham 18b9c1b51eSKate Stone SBExpressionOptions::SBExpressionOptions() 19b9c1b51eSKate Stone : m_opaque_ap(new EvaluateExpressionOptions()) {} 2035e1bda6SJim Ingham 21b9c1b51eSKate Stone SBExpressionOptions::SBExpressionOptions(const SBExpressionOptions &rhs) { 2235e1bda6SJim Ingham m_opaque_ap.reset(new EvaluateExpressionOptions()); 2335e1bda6SJim Ingham *(m_opaque_ap.get()) = rhs.ref(); 2435e1bda6SJim Ingham } 2535e1bda6SJim Ingham 26b9c1b51eSKate Stone const SBExpressionOptions &SBExpressionOptions:: 27b9c1b51eSKate Stone operator=(const SBExpressionOptions &rhs) { 28b9c1b51eSKate Stone if (this != &rhs) { 2935e1bda6SJim Ingham this->ref() = rhs.ref(); 3035e1bda6SJim Ingham } 3135e1bda6SJim Ingham return *this; 3235e1bda6SJim Ingham } 3335e1bda6SJim Ingham 34b9c1b51eSKate Stone SBExpressionOptions::~SBExpressionOptions() {} 3535e1bda6SJim Ingham 36b9c1b51eSKate Stone bool SBExpressionOptions::GetCoerceResultToId() const { 3735e1bda6SJim Ingham return m_opaque_ap->DoesCoerceToId(); 3835e1bda6SJim Ingham } 3935e1bda6SJim Ingham 40b9c1b51eSKate Stone void SBExpressionOptions::SetCoerceResultToId(bool coerce) { 4135e1bda6SJim Ingham m_opaque_ap->SetCoerceToId(coerce); 4235e1bda6SJim Ingham } 4335e1bda6SJim Ingham 44b9c1b51eSKate Stone bool SBExpressionOptions::GetUnwindOnError() const { 4535e1bda6SJim Ingham return m_opaque_ap->DoesUnwindOnError(); 4635e1bda6SJim Ingham } 4735e1bda6SJim Ingham 48b9c1b51eSKate Stone void SBExpressionOptions::SetUnwindOnError(bool unwind) { 4935e1bda6SJim Ingham m_opaque_ap->SetUnwindOnError(unwind); 5035e1bda6SJim Ingham } 5135e1bda6SJim Ingham 52b9c1b51eSKate Stone bool SBExpressionOptions::GetIgnoreBreakpoints() const { 53184e9811SJim Ingham return m_opaque_ap->DoesIgnoreBreakpoints(); 54184e9811SJim Ingham } 55184e9811SJim Ingham 56b9c1b51eSKate Stone void SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) { 57184e9811SJim Ingham m_opaque_ap->SetIgnoreBreakpoints(ignore); 58184e9811SJim Ingham } 59184e9811SJim Ingham 60b9c1b51eSKate Stone lldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const { 6135e1bda6SJim Ingham return m_opaque_ap->GetUseDynamic(); 6235e1bda6SJim Ingham } 6335e1bda6SJim Ingham 64b9c1b51eSKate Stone void SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) { 6535e1bda6SJim Ingham m_opaque_ap->SetUseDynamic(dynamic); 6635e1bda6SJim Ingham } 6735e1bda6SJim Ingham 68b9c1b51eSKate Stone uint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const { 6943d35418SPavel Labath return m_opaque_ap->GetTimeout() ? m_opaque_ap->GetTimeout()->count() : 0; 7035e1bda6SJim Ingham } 7135e1bda6SJim Ingham 72b9c1b51eSKate Stone void SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) { 7343d35418SPavel Labath m_opaque_ap->SetTimeout(timeout == 0 ? Timeout<std::micro>(llvm::None) 7443d35418SPavel Labath : std::chrono::microseconds(timeout)); 7535e1bda6SJim Ingham } 7635e1bda6SJim Ingham 77b9c1b51eSKate Stone uint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const { 7843d35418SPavel Labath return m_opaque_ap->GetOneThreadTimeout() ? m_opaque_ap->GetOneThreadTimeout()->count() : 0; 79914f4e70SJim Ingham } 80914f4e70SJim Ingham 81b9c1b51eSKate Stone void SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) { 8243d35418SPavel Labath m_opaque_ap->SetOneThreadTimeout(timeout == 0 8343d35418SPavel Labath ? Timeout<std::micro>(llvm::None) 8443d35418SPavel Labath : std::chrono::microseconds(timeout)); 85914f4e70SJim Ingham } 86914f4e70SJim Ingham 87b9c1b51eSKate Stone bool SBExpressionOptions::GetTryAllThreads() const { 886fbc48bcSJim Ingham return m_opaque_ap->GetTryAllThreads(); 8935e1bda6SJim Ingham } 9035e1bda6SJim Ingham 91b9c1b51eSKate Stone void SBExpressionOptions::SetTryAllThreads(bool run_others) { 926fbc48bcSJim Ingham m_opaque_ap->SetTryAllThreads(run_others); 936fbc48bcSJim Ingham } 946fbc48bcSJim Ingham 95b9c1b51eSKate Stone bool SBExpressionOptions::GetStopOthers() const { 96286fb1efSJim Ingham return m_opaque_ap->GetStopOthers(); 97286fb1efSJim Ingham } 98286fb1efSJim Ingham 99b9c1b51eSKate Stone void SBExpressionOptions::SetStopOthers(bool run_others) { 100286fb1efSJim Ingham m_opaque_ap->SetStopOthers(run_others); 101286fb1efSJim Ingham } 102286fb1efSJim Ingham 103b9c1b51eSKate Stone bool SBExpressionOptions::GetTrapExceptions() const { 1046fbc48bcSJim Ingham return m_opaque_ap->GetTrapExceptions(); 1056fbc48bcSJim Ingham } 1066fbc48bcSJim Ingham 107b9c1b51eSKate Stone void SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) { 1086fbc48bcSJim Ingham m_opaque_ap->SetTrapExceptions(trap_exceptions); 10935e1bda6SJim Ingham } 11035e1bda6SJim Ingham 111b9c1b51eSKate Stone void SBExpressionOptions::SetLanguage(lldb::LanguageType language) { 112705b1809SJason Molenda m_opaque_ap->SetLanguage(language); 113705b1809SJason Molenda } 114705b1809SJason Molenda 115b9c1b51eSKate Stone void SBExpressionOptions::SetCancelCallback( 116b9c1b51eSKate Stone lldb::ExpressionCancelCallback callback, void *baton) { 1171624a2d3SJim Ingham m_opaque_ap->SetCancelCallback(callback, baton); 1181624a2d3SJim Ingham } 1191624a2d3SJim Ingham 120b9c1b51eSKate Stone bool SBExpressionOptions::GetGenerateDebugInfo() { 121205ca1e8SGreg Clayton return m_opaque_ap->GetGenerateDebugInfo(); 122205ca1e8SGreg Clayton } 123205ca1e8SGreg Clayton 124b9c1b51eSKate Stone void SBExpressionOptions::SetGenerateDebugInfo(bool b) { 125205ca1e8SGreg Clayton return m_opaque_ap->SetGenerateDebugInfo(b); 126205ca1e8SGreg Clayton } 127205ca1e8SGreg Clayton 128b9c1b51eSKate Stone bool SBExpressionOptions::GetSuppressPersistentResult() { 1297ab079b6SJim Ingham return m_opaque_ap->GetResultIsInternal(); 1307ab079b6SJim Ingham } 1317ab079b6SJim Ingham 132b9c1b51eSKate Stone void SBExpressionOptions::SetSuppressPersistentResult(bool b) { 1337ab079b6SJim Ingham return m_opaque_ap->SetResultIsInternal(b); 1347ab079b6SJim Ingham } 1357ab079b6SJim Ingham 136b9c1b51eSKate Stone const char *SBExpressionOptions::GetPrefix() const { 1374e1042e1SGreg Clayton return m_opaque_ap->GetPrefix(); 1384e1042e1SGreg Clayton } 1394e1042e1SGreg Clayton 140b9c1b51eSKate Stone void SBExpressionOptions::SetPrefix(const char *prefix) { 1414e1042e1SGreg Clayton return m_opaque_ap->SetPrefix(prefix); 1424e1042e1SGreg Clayton } 1437ab079b6SJim Ingham 144b9c1b51eSKate Stone bool SBExpressionOptions::GetAutoApplyFixIts() { 145a1e541bfSJim Ingham return m_opaque_ap->GetAutoApplyFixIts(); 146a1e541bfSJim Ingham } 147a1e541bfSJim Ingham 148b9c1b51eSKate Stone void SBExpressionOptions::SetAutoApplyFixIts(bool b) { 149a1e541bfSJim Ingham return m_opaque_ap->SetAutoApplyFixIts(b); 150a1e541bfSJim Ingham } 151a1e541bfSJim Ingham 152b9c1b51eSKate Stone bool SBExpressionOptions::GetTopLevel() { 153863fab69SSean Callanan return m_opaque_ap->GetExecutionPolicy() == eExecutionPolicyTopLevel; 154863fab69SSean Callanan } 155863fab69SSean Callanan 156b9c1b51eSKate Stone void SBExpressionOptions::SetTopLevel(bool b) { 157b9c1b51eSKate Stone m_opaque_ap->SetExecutionPolicy(b ? eExecutionPolicyTopLevel 158b9c1b51eSKate Stone : m_opaque_ap->default_execution_policy); 159863fab69SSean Callanan } 160863fab69SSean Callanan 161ab639986SJim Ingham bool SBExpressionOptions::GetAllowJIT() { 162ab639986SJim Ingham return m_opaque_ap->GetExecutionPolicy() != eExecutionPolicyNever; 163ab639986SJim Ingham } 164ab639986SJim Ingham 165ab639986SJim Ingham void SBExpressionOptions::SetAllowJIT(bool allow) { 166ab639986SJim Ingham m_opaque_ap->SetExecutionPolicy(allow ? m_opaque_ap->default_execution_policy 167ab639986SJim Ingham : eExecutionPolicyNever); 168ab639986SJim Ingham } 169ab639986SJim Ingham 170b9c1b51eSKate Stone EvaluateExpressionOptions *SBExpressionOptions::get() const { 17135e1bda6SJim Ingham return m_opaque_ap.get(); 17235e1bda6SJim Ingham } 17335e1bda6SJim Ingham 174b9c1b51eSKate Stone EvaluateExpressionOptions &SBExpressionOptions::ref() const { 17535e1bda6SJim Ingham return *(m_opaque_ap.get()); 17635e1bda6SJim Ingham } 177