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 (const lldb::SBTarget &target) :
33 m_exe_ctx_sp(new ExecutionContextRef())
34 {
35     m_exe_ctx_sp->SetTargetSP(target.GetSP());
36 }
37 
38 SBExecutionContext::SBExecutionContext (const lldb::SBProcess &process) :
39 m_exe_ctx_sp(new ExecutionContextRef())
40 {
41     m_exe_ctx_sp->SetProcessSP(process.GetSP());
42 }
43 
44 SBExecutionContext::SBExecutionContext (lldb::SBThread thread) :
45 m_exe_ctx_sp(new ExecutionContextRef())
46 {
47     m_exe_ctx_sp->SetThreadPtr(thread.get());
48 }
49 
50 SBExecutionContext::SBExecutionContext (const lldb::SBFrame &frame) :
51 m_exe_ctx_sp(new ExecutionContextRef())
52 {
53     m_exe_ctx_sp->SetFrameSP(frame.GetFrameSP());
54 }
55 
56 SBExecutionContext::~SBExecutionContext()
57 {
58 }
59 
60 const SBExecutionContext &
61 SBExecutionContext::operator = (const lldb::SBExecutionContext &rhs)
62 {
63     m_exe_ctx_sp = rhs.m_exe_ctx_sp;
64     return *this;
65 }
66 
67 SBTarget
68 SBExecutionContext::GetTarget () const
69 {
70     SBTarget sb_target;
71     if (m_exe_ctx_sp)
72     {
73         TargetSP target_sp(m_exe_ctx_sp->GetTargetSP());
74         if (target_sp)
75             sb_target.SetSP(target_sp);
76     }
77     return sb_target;
78 }
79 
80 SBProcess
81 SBExecutionContext::GetProcess () const
82 {
83     SBProcess sb_process;
84     if (m_exe_ctx_sp)
85     {
86         ProcessSP process_sp(m_exe_ctx_sp->GetProcessSP());
87         if (process_sp)
88             sb_process.SetSP(process_sp);
89     }
90     return sb_process;
91 }
92 
93 SBThread
94 SBExecutionContext::GetThread () const
95 {
96     SBThread sb_thread;
97     if (m_exe_ctx_sp)
98     {
99         ThreadSP thread_sp(m_exe_ctx_sp->GetThreadSP());
100         if (thread_sp)
101             sb_thread.SetThread(thread_sp);
102     }
103     return sb_thread;
104 }
105 
106 SBFrame
107 SBExecutionContext::GetFrame () const
108 {
109     SBFrame sb_frame;
110     if (m_exe_ctx_sp)
111     {
112         StackFrameSP frame_sp(m_exe_ctx_sp->GetFrameSP());
113         if (frame_sp)
114             sb_frame.SetFrameSP(frame_sp);
115     }
116     return sb_frame;
117 }
118 
119