1*35e1bda6SJim Ingham //===-- SBExpressionOptions.cpp ---------------------------------------------*- C++ -*-===// 2*35e1bda6SJim Ingham // 3*35e1bda6SJim Ingham // The LLVM Compiler Infrastructure 4*35e1bda6SJim Ingham // 5*35e1bda6SJim Ingham // This file is distributed under the University of Illinois Open Source 6*35e1bda6SJim Ingham // License. See LICENSE.TXT for details. 7*35e1bda6SJim Ingham // 8*35e1bda6SJim Ingham //===----------------------------------------------------------------------===// 9*35e1bda6SJim Ingham 10*35e1bda6SJim Ingham #include "lldb/API/SBExpressionOptions.h" 11*35e1bda6SJim Ingham #include "lldb/API/SBStream.h" 12*35e1bda6SJim Ingham 13*35e1bda6SJim Ingham #include "lldb/Target/Target.h" 14*35e1bda6SJim Ingham 15*35e1bda6SJim Ingham using namespace lldb; 16*35e1bda6SJim Ingham using namespace lldb_private; 17*35e1bda6SJim Ingham 18*35e1bda6SJim Ingham 19*35e1bda6SJim Ingham SBExpressionOptions::SBExpressionOptions () 20*35e1bda6SJim Ingham { 21*35e1bda6SJim Ingham m_opaque_ap.reset(new EvaluateExpressionOptions()); 22*35e1bda6SJim Ingham } 23*35e1bda6SJim Ingham 24*35e1bda6SJim Ingham SBExpressionOptions::SBExpressionOptions (bool coerce_to_id, 25*35e1bda6SJim Ingham bool unwind_on_error, 26*35e1bda6SJim Ingham bool keep_in_memory, 27*35e1bda6SJim Ingham bool run_others, 28*35e1bda6SJim Ingham DynamicValueType use_dynamic, 29*35e1bda6SJim Ingham uint32_t timeout_usec) 30*35e1bda6SJim Ingham { 31*35e1bda6SJim Ingham m_opaque_ap.reset(new EvaluateExpressionOptions()); 32*35e1bda6SJim Ingham m_opaque_ap->SetCoerceToId(coerce_to_id); 33*35e1bda6SJim Ingham m_opaque_ap->SetUnwindOnError(unwind_on_error); 34*35e1bda6SJim Ingham m_opaque_ap->SetKeepInMemory(keep_in_memory); 35*35e1bda6SJim Ingham m_opaque_ap->SetRunOthers(run_others); 36*35e1bda6SJim Ingham m_opaque_ap->SetUseDynamic (use_dynamic); 37*35e1bda6SJim Ingham m_opaque_ap->SetTimeoutUsec (timeout_usec); 38*35e1bda6SJim Ingham } 39*35e1bda6SJim Ingham 40*35e1bda6SJim Ingham SBExpressionOptions::SBExpressionOptions (const SBExpressionOptions &rhs) 41*35e1bda6SJim Ingham { 42*35e1bda6SJim Ingham m_opaque_ap.reset(new EvaluateExpressionOptions()); 43*35e1bda6SJim Ingham *(m_opaque_ap.get()) = rhs.ref(); 44*35e1bda6SJim Ingham } 45*35e1bda6SJim Ingham 46*35e1bda6SJim Ingham const SBExpressionOptions & 47*35e1bda6SJim Ingham SBExpressionOptions::operator = (const SBExpressionOptions &rhs) 48*35e1bda6SJim Ingham { 49*35e1bda6SJim Ingham if (this != &rhs) 50*35e1bda6SJim Ingham { 51*35e1bda6SJim Ingham this->ref() = rhs.ref(); 52*35e1bda6SJim Ingham } 53*35e1bda6SJim Ingham return *this; 54*35e1bda6SJim Ingham } 55*35e1bda6SJim Ingham 56*35e1bda6SJim Ingham SBExpressionOptions::~SBExpressionOptions() 57*35e1bda6SJim Ingham { 58*35e1bda6SJim Ingham } 59*35e1bda6SJim Ingham 60*35e1bda6SJim Ingham bool 61*35e1bda6SJim Ingham SBExpressionOptions::DoesCoerceToId () const 62*35e1bda6SJim Ingham { 63*35e1bda6SJim Ingham return m_opaque_ap->DoesCoerceToId (); 64*35e1bda6SJim Ingham } 65*35e1bda6SJim Ingham 66*35e1bda6SJim Ingham void 67*35e1bda6SJim Ingham SBExpressionOptions::SetCoerceToId (bool coerce) 68*35e1bda6SJim Ingham { 69*35e1bda6SJim Ingham m_opaque_ap->SetCoerceToId (coerce); 70*35e1bda6SJim Ingham } 71*35e1bda6SJim Ingham 72*35e1bda6SJim Ingham bool 73*35e1bda6SJim Ingham SBExpressionOptions::DoesUnwindOnError () const 74*35e1bda6SJim Ingham { 75*35e1bda6SJim Ingham return m_opaque_ap->DoesUnwindOnError (); 76*35e1bda6SJim Ingham } 77*35e1bda6SJim Ingham 78*35e1bda6SJim Ingham void 79*35e1bda6SJim Ingham SBExpressionOptions::SetUnwindOnError (bool unwind) 80*35e1bda6SJim Ingham { 81*35e1bda6SJim Ingham m_opaque_ap->SetUnwindOnError (unwind); 82*35e1bda6SJim Ingham } 83*35e1bda6SJim Ingham 84*35e1bda6SJim Ingham bool 85*35e1bda6SJim Ingham SBExpressionOptions::DoesKeepInMemory () const 86*35e1bda6SJim Ingham { 87*35e1bda6SJim Ingham return m_opaque_ap->DoesKeepInMemory (); 88*35e1bda6SJim Ingham } 89*35e1bda6SJim Ingham 90*35e1bda6SJim Ingham void 91*35e1bda6SJim Ingham SBExpressionOptions::SetKeepInMemory (bool keep) 92*35e1bda6SJim Ingham { 93*35e1bda6SJim Ingham m_opaque_ap->SetKeepInMemory (keep); 94*35e1bda6SJim Ingham } 95*35e1bda6SJim Ingham 96*35e1bda6SJim Ingham lldb::DynamicValueType 97*35e1bda6SJim Ingham SBExpressionOptions::GetUseDynamic () const 98*35e1bda6SJim Ingham { 99*35e1bda6SJim Ingham return m_opaque_ap->GetUseDynamic (); 100*35e1bda6SJim Ingham } 101*35e1bda6SJim Ingham 102*35e1bda6SJim Ingham void 103*35e1bda6SJim Ingham SBExpressionOptions::SetUseDynamic (lldb::DynamicValueType dynamic) 104*35e1bda6SJim Ingham { 105*35e1bda6SJim Ingham m_opaque_ap->SetUseDynamic (dynamic); 106*35e1bda6SJim Ingham } 107*35e1bda6SJim Ingham 108*35e1bda6SJim Ingham uint32_t 109*35e1bda6SJim Ingham SBExpressionOptions::GetTimeoutUsec () const 110*35e1bda6SJim Ingham { 111*35e1bda6SJim Ingham return m_opaque_ap->GetTimeoutUsec (); 112*35e1bda6SJim Ingham } 113*35e1bda6SJim Ingham 114*35e1bda6SJim Ingham void 115*35e1bda6SJim Ingham SBExpressionOptions::SetTimeoutUsec (uint32_t timeout) 116*35e1bda6SJim Ingham { 117*35e1bda6SJim Ingham m_opaque_ap->SetTimeoutUsec (timeout); 118*35e1bda6SJim Ingham } 119*35e1bda6SJim Ingham 120*35e1bda6SJim Ingham bool 121*35e1bda6SJim Ingham SBExpressionOptions::GetRunOthers () const 122*35e1bda6SJim Ingham { 123*35e1bda6SJim Ingham return m_opaque_ap->GetRunOthers (); 124*35e1bda6SJim Ingham } 125*35e1bda6SJim Ingham 126*35e1bda6SJim Ingham void 127*35e1bda6SJim Ingham SBExpressionOptions::SetRunOthers (bool run_others) 128*35e1bda6SJim Ingham { 129*35e1bda6SJim Ingham m_opaque_ap->SetRunOthers (run_others); 130*35e1bda6SJim Ingham } 131*35e1bda6SJim Ingham 132*35e1bda6SJim Ingham EvaluateExpressionOptions * 133*35e1bda6SJim Ingham SBExpressionOptions::get() const 134*35e1bda6SJim Ingham { 135*35e1bda6SJim Ingham return m_opaque_ap.get(); 136*35e1bda6SJim Ingham } 137*35e1bda6SJim Ingham 138*35e1bda6SJim Ingham EvaluateExpressionOptions & 139*35e1bda6SJim Ingham SBExpressionOptions::ref () const 140*35e1bda6SJim Ingham { 141*35e1bda6SJim Ingham return *(m_opaque_ap.get()); 142*35e1bda6SJim Ingham } 143