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