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