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 ExecutionContextRef *
73 SBExecutionContext::get () const
74 {
75     return m_exe_ctx_sp.get();
76 }
77 
78 SBTarget
79 SBExecutionContext::GetTarget () const
80 {
81     SBTarget sb_target;
82     if (m_exe_ctx_sp)
83     {
84         TargetSP target_sp(m_exe_ctx_sp->GetTargetSP());
85         if (target_sp)
86             sb_target.SetSP(target_sp);
87     }
88     return sb_target;
89 }
90 
91 SBProcess
92 SBExecutionContext::GetProcess () const
93 {
94     SBProcess sb_process;
95     if (m_exe_ctx_sp)
96     {
97         ProcessSP process_sp(m_exe_ctx_sp->GetProcessSP());
98         if (process_sp)
99             sb_process.SetSP(process_sp);
100     }
101     return sb_process;
102 }
103 
104 SBThread
105 SBExecutionContext::GetThread () const
106 {
107     SBThread sb_thread;
108     if (m_exe_ctx_sp)
109     {
110         ThreadSP thread_sp(m_exe_ctx_sp->GetThreadSP());
111         if (thread_sp)
112             sb_thread.SetThread(thread_sp);
113     }
114     return sb_thread;
115 }
116 
117 SBFrame
118 SBExecutionContext::GetFrame () const
119 {
120     SBFrame sb_frame;
121     if (m_exe_ctx_sp)
122     {
123         StackFrameSP frame_sp(m_exe_ctx_sp->GetFrameSP());
124         if (frame_sp)
125             sb_frame.SetFrameSP(frame_sp);
126     }
127     return sb_frame;
128 }
129 
130