1314564Sdim//===-- SBExpressionOptions.cpp ---------------------------------------------*- 2314564Sdim//C++ -*-===// 3254721Semaste// 4353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5353358Sdim// See https://llvm.org/LICENSE.txt for license information. 6353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#include "lldb/API/SBExpressionOptions.h" 11353358Sdim#include "SBReproducerPrivate.h" 12353358Sdim#include "Utils.h" 13254721Semaste#include "lldb/API/SBStream.h" 14254721Semaste#include "lldb/Target/Target.h" 15254721Semaste 16254721Semasteusing namespace lldb; 17254721Semasteusing namespace lldb_private; 18254721Semaste 19314564SdimSBExpressionOptions::SBExpressionOptions() 20353358Sdim : m_opaque_up(new EvaluateExpressionOptions()) { 21353358Sdim LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBExpressionOptions); 22353358Sdim} 23254721Semaste 24353358SdimSBExpressionOptions::SBExpressionOptions(const SBExpressionOptions &rhs) 25353358Sdim : m_opaque_up() { 26353358Sdim LLDB_RECORD_CONSTRUCTOR(SBExpressionOptions, 27353358Sdim (const lldb::SBExpressionOptions &), rhs); 28353358Sdim 29353358Sdim m_opaque_up = clone(rhs.m_opaque_up); 30254721Semaste} 31254721Semaste 32314564Sdimconst SBExpressionOptions &SBExpressionOptions:: 33314564Sdimoperator=(const SBExpressionOptions &rhs) { 34353358Sdim LLDB_RECORD_METHOD( 35353358Sdim const lldb::SBExpressionOptions &, 36353358Sdim SBExpressionOptions, operator=,(const lldb::SBExpressionOptions &), rhs); 37353358Sdim 38353358Sdim if (this != &rhs) 39353358Sdim m_opaque_up = clone(rhs.m_opaque_up); 40353358Sdim return LLDB_RECORD_RESULT(*this); 41254721Semaste} 42254721Semaste 43314564SdimSBExpressionOptions::~SBExpressionOptions() {} 44254721Semaste 45314564Sdimbool SBExpressionOptions::GetCoerceResultToId() const { 46353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBExpressionOptions, 47353358Sdim GetCoerceResultToId); 48353358Sdim 49353358Sdim return m_opaque_up->DoesCoerceToId(); 50254721Semaste} 51254721Semaste 52314564Sdimvoid SBExpressionOptions::SetCoerceResultToId(bool coerce) { 53353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetCoerceResultToId, (bool), 54353358Sdim coerce); 55353358Sdim 56353358Sdim m_opaque_up->SetCoerceToId(coerce); 57254721Semaste} 58254721Semaste 59314564Sdimbool SBExpressionOptions::GetUnwindOnError() const { 60353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBExpressionOptions, GetUnwindOnError); 61353358Sdim 62353358Sdim return m_opaque_up->DoesUnwindOnError(); 63254721Semaste} 64254721Semaste 65314564Sdimvoid SBExpressionOptions::SetUnwindOnError(bool unwind) { 66353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetUnwindOnError, (bool), 67353358Sdim unwind); 68353358Sdim 69353358Sdim m_opaque_up->SetUnwindOnError(unwind); 70254721Semaste} 71254721Semaste 72314564Sdimbool SBExpressionOptions::GetIgnoreBreakpoints() const { 73353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBExpressionOptions, 74353358Sdim GetIgnoreBreakpoints); 75353358Sdim 76353358Sdim return m_opaque_up->DoesIgnoreBreakpoints(); 77254721Semaste} 78254721Semaste 79314564Sdimvoid SBExpressionOptions::SetIgnoreBreakpoints(bool ignore) { 80353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetIgnoreBreakpoints, (bool), 81353358Sdim ignore); 82353358Sdim 83353358Sdim m_opaque_up->SetIgnoreBreakpoints(ignore); 84254721Semaste} 85254721Semaste 86314564Sdimlldb::DynamicValueType SBExpressionOptions::GetFetchDynamicValue() const { 87353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::DynamicValueType, SBExpressionOptions, 88353358Sdim GetFetchDynamicValue); 89353358Sdim 90353358Sdim return m_opaque_up->GetUseDynamic(); 91254721Semaste} 92254721Semaste 93314564Sdimvoid SBExpressionOptions::SetFetchDynamicValue(lldb::DynamicValueType dynamic) { 94353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetFetchDynamicValue, 95353358Sdim (lldb::DynamicValueType), dynamic); 96353358Sdim 97353358Sdim m_opaque_up->SetUseDynamic(dynamic); 98254721Semaste} 99254721Semaste 100314564Sdimuint32_t SBExpressionOptions::GetTimeoutInMicroSeconds() const { 101353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBExpressionOptions, 102353358Sdim GetTimeoutInMicroSeconds); 103353358Sdim 104353358Sdim return m_opaque_up->GetTimeout() ? m_opaque_up->GetTimeout()->count() : 0; 105254721Semaste} 106254721Semaste 107314564Sdimvoid SBExpressionOptions::SetTimeoutInMicroSeconds(uint32_t timeout) { 108353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetTimeoutInMicroSeconds, 109353358Sdim (uint32_t), timeout); 110353358Sdim 111353358Sdim m_opaque_up->SetTimeout(timeout == 0 ? Timeout<std::micro>(llvm::None) 112314564Sdim : std::chrono::microseconds(timeout)); 113254721Semaste} 114254721Semaste 115314564Sdimuint32_t SBExpressionOptions::GetOneThreadTimeoutInMicroSeconds() const { 116353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(uint32_t, SBExpressionOptions, 117353358Sdim GetOneThreadTimeoutInMicroSeconds); 118353358Sdim 119353358Sdim return m_opaque_up->GetOneThreadTimeout() 120353358Sdim ? m_opaque_up->GetOneThreadTimeout()->count() 121353358Sdim : 0; 122254721Semaste} 123254721Semaste 124314564Sdimvoid SBExpressionOptions::SetOneThreadTimeoutInMicroSeconds(uint32_t timeout) { 125353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, 126353358Sdim SetOneThreadTimeoutInMicroSeconds, (uint32_t), timeout); 127353358Sdim 128353358Sdim m_opaque_up->SetOneThreadTimeout(timeout == 0 129314564Sdim ? Timeout<std::micro>(llvm::None) 130314564Sdim : std::chrono::microseconds(timeout)); 131276479Sdim} 132276479Sdim 133314564Sdimbool SBExpressionOptions::GetTryAllThreads() const { 134353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBExpressionOptions, GetTryAllThreads); 135353358Sdim 136353358Sdim return m_opaque_up->GetTryAllThreads(); 137276479Sdim} 138276479Sdim 139314564Sdimvoid SBExpressionOptions::SetTryAllThreads(bool run_others) { 140353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetTryAllThreads, (bool), 141353358Sdim run_others); 142353358Sdim 143353358Sdim m_opaque_up->SetTryAllThreads(run_others); 144254721Semaste} 145254721Semaste 146314564Sdimbool SBExpressionOptions::GetStopOthers() const { 147353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBExpressionOptions, GetStopOthers); 148353358Sdim 149353358Sdim return m_opaque_up->GetStopOthers(); 150254721Semaste} 151254721Semaste 152314564Sdimvoid SBExpressionOptions::SetStopOthers(bool run_others) { 153353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetStopOthers, (bool), 154353358Sdim run_others); 155353358Sdim 156353358Sdim m_opaque_up->SetStopOthers(run_others); 157276479Sdim} 158276479Sdim 159314564Sdimbool SBExpressionOptions::GetTrapExceptions() const { 160353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBExpressionOptions, 161353358Sdim GetTrapExceptions); 162353358Sdim 163353358Sdim return m_opaque_up->GetTrapExceptions(); 164276479Sdim} 165276479Sdim 166314564Sdimvoid SBExpressionOptions::SetTrapExceptions(bool trap_exceptions) { 167353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetTrapExceptions, (bool), 168353358Sdim trap_exceptions); 169353358Sdim 170353358Sdim m_opaque_up->SetTrapExceptions(trap_exceptions); 171258884Semaste} 172258884Semaste 173314564Sdimvoid SBExpressionOptions::SetLanguage(lldb::LanguageType language) { 174353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetLanguage, 175353358Sdim (lldb::LanguageType), language); 176353358Sdim 177353358Sdim m_opaque_up->SetLanguage(language); 178258884Semaste} 179258884Semaste 180314564Sdimvoid SBExpressionOptions::SetCancelCallback( 181314564Sdim lldb::ExpressionCancelCallback callback, void *baton) { 182353358Sdim LLDB_RECORD_DUMMY(void, SBExpressionOptions, SetCancelCallback, 183353358Sdim (lldb::ExpressionCancelCallback, void *), callback, baton); 184353358Sdim 185353358Sdim m_opaque_up->SetCancelCallback(callback, baton); 186276479Sdim} 187276479Sdim 188314564Sdimbool SBExpressionOptions::GetGenerateDebugInfo() { 189353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBExpressionOptions, GetGenerateDebugInfo); 190353358Sdim 191353358Sdim return m_opaque_up->GetGenerateDebugInfo(); 192276479Sdim} 193276479Sdim 194314564Sdimvoid SBExpressionOptions::SetGenerateDebugInfo(bool b) { 195353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetGenerateDebugInfo, (bool), 196353358Sdim b); 197353358Sdim 198353358Sdim return m_opaque_up->SetGenerateDebugInfo(b); 199276479Sdim} 200276479Sdim 201314564Sdimbool SBExpressionOptions::GetSuppressPersistentResult() { 202353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBExpressionOptions, 203353358Sdim GetSuppressPersistentResult); 204353358Sdim 205353358Sdim return m_opaque_up->GetResultIsInternal(); 206276479Sdim} 207276479Sdim 208314564Sdimvoid SBExpressionOptions::SetSuppressPersistentResult(bool b) { 209353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetSuppressPersistentResult, 210353358Sdim (bool), b); 211353358Sdim 212353358Sdim return m_opaque_up->SetResultIsInternal(b); 213276479Sdim} 214276479Sdim 215314564Sdimconst char *SBExpressionOptions::GetPrefix() const { 216353358Sdim LLDB_RECORD_METHOD_CONST_NO_ARGS(const char *, SBExpressionOptions, 217353358Sdim GetPrefix); 218353358Sdim 219353358Sdim return m_opaque_up->GetPrefix(); 220276479Sdim} 221276479Sdim 222314564Sdimvoid SBExpressionOptions::SetPrefix(const char *prefix) { 223353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetPrefix, (const char *), 224353358Sdim prefix); 225353358Sdim 226353358Sdim return m_opaque_up->SetPrefix(prefix); 227288943Sdim} 228276479Sdim 229314564Sdimbool SBExpressionOptions::GetAutoApplyFixIts() { 230353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBExpressionOptions, GetAutoApplyFixIts); 231353358Sdim 232353358Sdim return m_opaque_up->GetAutoApplyFixIts(); 233288943Sdim} 234288943Sdim 235314564Sdimvoid SBExpressionOptions::SetAutoApplyFixIts(bool b) { 236353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetAutoApplyFixIts, (bool), b); 237353358Sdim 238353358Sdim return m_opaque_up->SetAutoApplyFixIts(b); 239309124Sdim} 240309124Sdim 241314564Sdimbool SBExpressionOptions::GetTopLevel() { 242353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBExpressionOptions, GetTopLevel); 243353358Sdim 244353358Sdim return m_opaque_up->GetExecutionPolicy() == eExecutionPolicyTopLevel; 245309124Sdim} 246309124Sdim 247314564Sdimvoid SBExpressionOptions::SetTopLevel(bool b) { 248353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetTopLevel, (bool), b); 249353358Sdim 250353358Sdim m_opaque_up->SetExecutionPolicy(b ? eExecutionPolicyTopLevel 251353358Sdim : m_opaque_up->default_execution_policy); 252309124Sdim} 253309124Sdim 254344779Sdimbool SBExpressionOptions::GetAllowJIT() { 255353358Sdim LLDB_RECORD_METHOD_NO_ARGS(bool, SBExpressionOptions, GetAllowJIT); 256353358Sdim 257353358Sdim return m_opaque_up->GetExecutionPolicy() != eExecutionPolicyNever; 258344779Sdim} 259344779Sdim 260344779Sdimvoid SBExpressionOptions::SetAllowJIT(bool allow) { 261353358Sdim LLDB_RECORD_METHOD(void, SBExpressionOptions, SetAllowJIT, (bool), allow); 262353358Sdim 263353358Sdim m_opaque_up->SetExecutionPolicy(allow ? m_opaque_up->default_execution_policy 264353358Sdim : eExecutionPolicyNever); 265344779Sdim} 266344779Sdim 267314564SdimEvaluateExpressionOptions *SBExpressionOptions::get() const { 268353358Sdim return m_opaque_up.get(); 269309124Sdim} 270309124Sdim 271314564SdimEvaluateExpressionOptions &SBExpressionOptions::ref() const { 272353358Sdim return *(m_opaque_up.get()); 273254721Semaste} 274353358Sdim 275353358Sdimnamespace lldb_private { 276353358Sdimnamespace repro { 277353358Sdim 278353358Sdimtemplate <> 279353358Sdimvoid RegisterMethods<SBExpressionOptions>(Registry &R) { 280353358Sdim LLDB_REGISTER_CONSTRUCTOR(SBExpressionOptions, ()); 281353358Sdim LLDB_REGISTER_CONSTRUCTOR(SBExpressionOptions, 282353358Sdim (const lldb::SBExpressionOptions &)); 283353358Sdim LLDB_REGISTER_METHOD( 284353358Sdim const lldb::SBExpressionOptions &, 285353358Sdim SBExpressionOptions, operator=,(const lldb::SBExpressionOptions &)); 286353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBExpressionOptions, GetCoerceResultToId, 287353358Sdim ()); 288353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetCoerceResultToId, 289353358Sdim (bool)); 290353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBExpressionOptions, GetUnwindOnError, ()); 291353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetUnwindOnError, (bool)); 292353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBExpressionOptions, GetIgnoreBreakpoints, 293353358Sdim ()); 294353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetIgnoreBreakpoints, 295353358Sdim (bool)); 296353358Sdim LLDB_REGISTER_METHOD_CONST(lldb::DynamicValueType, SBExpressionOptions, 297353358Sdim GetFetchDynamicValue, ()); 298353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetFetchDynamicValue, 299353358Sdim (lldb::DynamicValueType)); 300353358Sdim LLDB_REGISTER_METHOD_CONST(uint32_t, SBExpressionOptions, 301353358Sdim GetTimeoutInMicroSeconds, ()); 302353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetTimeoutInMicroSeconds, 303353358Sdim (uint32_t)); 304353358Sdim LLDB_REGISTER_METHOD_CONST(uint32_t, SBExpressionOptions, 305353358Sdim GetOneThreadTimeoutInMicroSeconds, ()); 306353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, 307353358Sdim SetOneThreadTimeoutInMicroSeconds, (uint32_t)); 308353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBExpressionOptions, GetTryAllThreads, ()); 309353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetTryAllThreads, (bool)); 310353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBExpressionOptions, GetStopOthers, ()); 311353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetStopOthers, (bool)); 312353358Sdim LLDB_REGISTER_METHOD_CONST(bool, SBExpressionOptions, GetTrapExceptions, 313353358Sdim ()); 314353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetTrapExceptions, (bool)); 315353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetLanguage, 316353358Sdim (lldb::LanguageType)); 317353358Sdim LLDB_REGISTER_METHOD(bool, SBExpressionOptions, GetGenerateDebugInfo, ()); 318353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetGenerateDebugInfo, 319353358Sdim (bool)); 320353358Sdim LLDB_REGISTER_METHOD(bool, SBExpressionOptions, GetSuppressPersistentResult, 321353358Sdim ()); 322353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetSuppressPersistentResult, 323353358Sdim (bool)); 324353358Sdim LLDB_REGISTER_METHOD_CONST(const char *, SBExpressionOptions, GetPrefix, 325353358Sdim ()); 326353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetPrefix, (const char *)); 327353358Sdim LLDB_REGISTER_METHOD(bool, SBExpressionOptions, GetAutoApplyFixIts, ()); 328353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetAutoApplyFixIts, (bool)); 329353358Sdim LLDB_REGISTER_METHOD(bool, SBExpressionOptions, GetTopLevel, ()); 330353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetTopLevel, (bool)); 331353358Sdim LLDB_REGISTER_METHOD(bool, SBExpressionOptions, GetAllowJIT, ()); 332353358Sdim LLDB_REGISTER_METHOD(void, SBExpressionOptions, SetAllowJIT, (bool)); 333353358Sdim} 334353358Sdim 335353358Sdim} 336353358Sdim} 337