1*b9c1b51eSKate Stone //===-- SBExecutionContext.cpp ------------------------------------*- C++ 2*b9c1b51eSKate Stone //-*-===// 3e85e84a7SEnrico Granata // 4e85e84a7SEnrico Granata // The LLVM Compiler Infrastructure 5e85e84a7SEnrico Granata // 6e85e84a7SEnrico Granata // This file is distributed under the University of Illinois Open Source 7e85e84a7SEnrico Granata // License. See LICENSE.TXT for details. 8e85e84a7SEnrico Granata // 9e85e84a7SEnrico Granata //===----------------------------------------------------------------------===// 10e85e84a7SEnrico Granata 11e85e84a7SEnrico Granata #include "lldb/API/SBExecutionContext.h" 12e85e84a7SEnrico Granata 13e85e84a7SEnrico Granata #include "lldb/API/SBFrame.h" 14*b9c1b51eSKate Stone #include "lldb/API/SBProcess.h" 15*b9c1b51eSKate Stone #include "lldb/API/SBTarget.h" 16*b9c1b51eSKate Stone #include "lldb/API/SBThread.h" 17e85e84a7SEnrico Granata 18e85e84a7SEnrico Granata #include "lldb/Target/ExecutionContext.h" 19e85e84a7SEnrico Granata 20e85e84a7SEnrico Granata using namespace lldb; 21e85e84a7SEnrico Granata using namespace lldb_private; 22e85e84a7SEnrico Granata 23*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext() : m_exe_ctx_sp() {} 24e85e84a7SEnrico Granata 25*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext(const lldb::SBExecutionContext &rhs) 26*b9c1b51eSKate Stone : m_exe_ctx_sp(rhs.m_exe_ctx_sp) {} 27e85e84a7SEnrico Granata 28*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext( 29*b9c1b51eSKate Stone lldb::ExecutionContextRefSP exe_ctx_ref_sp) 30*b9c1b51eSKate Stone : m_exe_ctx_sp(exe_ctx_ref_sp) {} 3106be059aSEnrico Granata 32*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext(const lldb::SBTarget &target) 33*b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 34e85e84a7SEnrico Granata m_exe_ctx_sp->SetTargetSP(target.GetSP()); 35e85e84a7SEnrico Granata } 36e85e84a7SEnrico Granata 37*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext(const lldb::SBProcess &process) 38*b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 39e85e84a7SEnrico Granata m_exe_ctx_sp->SetProcessSP(process.GetSP()); 40e85e84a7SEnrico Granata } 41e85e84a7SEnrico Granata 42*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext(lldb::SBThread thread) 43*b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 44e85e84a7SEnrico Granata m_exe_ctx_sp->SetThreadPtr(thread.get()); 45e85e84a7SEnrico Granata } 46e85e84a7SEnrico Granata 47*b9c1b51eSKate Stone SBExecutionContext::SBExecutionContext(const lldb::SBFrame &frame) 48*b9c1b51eSKate Stone : m_exe_ctx_sp(new ExecutionContextRef()) { 49e85e84a7SEnrico Granata m_exe_ctx_sp->SetFrameSP(frame.GetFrameSP()); 50e85e84a7SEnrico Granata } 51e85e84a7SEnrico Granata 52*b9c1b51eSKate Stone SBExecutionContext::~SBExecutionContext() {} 53e85e84a7SEnrico Granata 54*b9c1b51eSKate Stone const SBExecutionContext &SBExecutionContext:: 55*b9c1b51eSKate Stone operator=(const lldb::SBExecutionContext &rhs) { 56e85e84a7SEnrico Granata m_exe_ctx_sp = rhs.m_exe_ctx_sp; 57e85e84a7SEnrico Granata return *this; 58e85e84a7SEnrico Granata } 59e85e84a7SEnrico Granata 60*b9c1b51eSKate Stone ExecutionContextRef *SBExecutionContext::get() const { 61ffc9f1deSJim Ingham return m_exe_ctx_sp.get(); 62ffc9f1deSJim Ingham } 63ffc9f1deSJim Ingham 64*b9c1b51eSKate Stone SBTarget SBExecutionContext::GetTarget() const { 65e85e84a7SEnrico Granata SBTarget sb_target; 66*b9c1b51eSKate Stone if (m_exe_ctx_sp) { 67e85e84a7SEnrico Granata TargetSP target_sp(m_exe_ctx_sp->GetTargetSP()); 68e85e84a7SEnrico Granata if (target_sp) 69e85e84a7SEnrico Granata sb_target.SetSP(target_sp); 70e85e84a7SEnrico Granata } 71e85e84a7SEnrico Granata return sb_target; 72e85e84a7SEnrico Granata } 73e85e84a7SEnrico Granata 74*b9c1b51eSKate Stone SBProcess SBExecutionContext::GetProcess() const { 75e85e84a7SEnrico Granata SBProcess sb_process; 76*b9c1b51eSKate Stone if (m_exe_ctx_sp) { 77e85e84a7SEnrico Granata ProcessSP process_sp(m_exe_ctx_sp->GetProcessSP()); 78e85e84a7SEnrico Granata if (process_sp) 79e85e84a7SEnrico Granata sb_process.SetSP(process_sp); 80e85e84a7SEnrico Granata } 81e85e84a7SEnrico Granata return sb_process; 82e85e84a7SEnrico Granata } 83e85e84a7SEnrico Granata 84*b9c1b51eSKate Stone SBThread SBExecutionContext::GetThread() const { 85e85e84a7SEnrico Granata SBThread sb_thread; 86*b9c1b51eSKate Stone if (m_exe_ctx_sp) { 87e85e84a7SEnrico Granata ThreadSP thread_sp(m_exe_ctx_sp->GetThreadSP()); 88e85e84a7SEnrico Granata if (thread_sp) 89e85e84a7SEnrico Granata sb_thread.SetThread(thread_sp); 90e85e84a7SEnrico Granata } 91e85e84a7SEnrico Granata return sb_thread; 92e85e84a7SEnrico Granata } 93e85e84a7SEnrico Granata 94*b9c1b51eSKate Stone SBFrame SBExecutionContext::GetFrame() const { 95e85e84a7SEnrico Granata SBFrame sb_frame; 96*b9c1b51eSKate Stone if (m_exe_ctx_sp) { 97e85e84a7SEnrico Granata StackFrameSP frame_sp(m_exe_ctx_sp->GetFrameSP()); 98e85e84a7SEnrico Granata if (frame_sp) 99e85e84a7SEnrico Granata sb_frame.SetFrameSP(frame_sp); 100e85e84a7SEnrico Granata } 101e85e84a7SEnrico Granata return sb_frame; 102e85e84a7SEnrico Granata } 103