blob: 74a543c77d2d3544028773349f3a212279b3a2f1 [file] [log] [blame]
Kate Stoneb9c1b512016-09-06 20:57:50 +00001//===-- SBExecutionContext.cpp ------------------------------------*- C++
2//-*-===//
Enrico Granatae85e84a2014-10-01 20:43:45 +00003//
4// The LLVM Compiler Infrastructure
5//
6// This file is distributed under the University of Illinois Open Source
7// License. See LICENSE.TXT for details.
8//
9//===----------------------------------------------------------------------===//
10
11#include "lldb/API/SBExecutionContext.h"
12
Enrico Granatae85e84a2014-10-01 20:43:45 +000013#include "lldb/API/SBFrame.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000014#include "lldb/API/SBProcess.h"
15#include "lldb/API/SBTarget.h"
16#include "lldb/API/SBThread.h"
Enrico Granatae85e84a2014-10-01 20:43:45 +000017
18#include "lldb/Target/ExecutionContext.h"
19
20using namespace lldb;
21using namespace lldb_private;
22
Kate Stoneb9c1b512016-09-06 20:57:50 +000023SBExecutionContext::SBExecutionContext() : m_exe_ctx_sp() {}
24
25SBExecutionContext::SBExecutionContext(const lldb::SBExecutionContext &rhs)
26 : m_exe_ctx_sp(rhs.m_exe_ctx_sp) {}
27
28SBExecutionContext::SBExecutionContext(
29 lldb::ExecutionContextRefSP exe_ctx_ref_sp)
30 : m_exe_ctx_sp(exe_ctx_ref_sp) {}
31
32SBExecutionContext::SBExecutionContext(const lldb::SBTarget &target)
33 : m_exe_ctx_sp(new ExecutionContextRef()) {
34 m_exe_ctx_sp->SetTargetSP(target.GetSP());
Enrico Granatae85e84a2014-10-01 20:43:45 +000035}
36
Kate Stoneb9c1b512016-09-06 20:57:50 +000037SBExecutionContext::SBExecutionContext(const lldb::SBProcess &process)
38 : m_exe_ctx_sp(new ExecutionContextRef()) {
39 m_exe_ctx_sp->SetProcessSP(process.GetSP());
Enrico Granatae85e84a2014-10-01 20:43:45 +000040}
41
Kate Stoneb9c1b512016-09-06 20:57:50 +000042SBExecutionContext::SBExecutionContext(lldb::SBThread thread)
43 : m_exe_ctx_sp(new ExecutionContextRef()) {
44 m_exe_ctx_sp->SetThreadPtr(thread.get());
Enrico Granata06be0592014-10-01 21:47:29 +000045}
46
Kate Stoneb9c1b512016-09-06 20:57:50 +000047SBExecutionContext::SBExecutionContext(const lldb::SBFrame &frame)
48 : m_exe_ctx_sp(new ExecutionContextRef()) {
49 m_exe_ctx_sp->SetFrameSP(frame.GetFrameSP());
Enrico Granatae85e84a2014-10-01 20:43:45 +000050}
51
Kate Stoneb9c1b512016-09-06 20:57:50 +000052SBExecutionContext::~SBExecutionContext() {}
53
54const SBExecutionContext &SBExecutionContext::
55operator=(const lldb::SBExecutionContext &rhs) {
56 m_exe_ctx_sp = rhs.m_exe_ctx_sp;
57 return *this;
Enrico Granatae85e84a2014-10-01 20:43:45 +000058}
59
Kate Stoneb9c1b512016-09-06 20:57:50 +000060ExecutionContextRef *SBExecutionContext::get() const {
61 return m_exe_ctx_sp.get();
Enrico Granatae85e84a2014-10-01 20:43:45 +000062}
63
Kate Stoneb9c1b512016-09-06 20:57:50 +000064SBTarget SBExecutionContext::GetTarget() const {
65 SBTarget sb_target;
66 if (m_exe_ctx_sp) {
67 TargetSP target_sp(m_exe_ctx_sp->GetTargetSP());
68 if (target_sp)
69 sb_target.SetSP(target_sp);
70 }
71 return sb_target;
Enrico Granatae85e84a2014-10-01 20:43:45 +000072}
73
Kate Stoneb9c1b512016-09-06 20:57:50 +000074SBProcess SBExecutionContext::GetProcess() const {
75 SBProcess sb_process;
76 if (m_exe_ctx_sp) {
77 ProcessSP process_sp(m_exe_ctx_sp->GetProcessSP());
78 if (process_sp)
79 sb_process.SetSP(process_sp);
80 }
81 return sb_process;
Enrico Granatae85e84a2014-10-01 20:43:45 +000082}
83
Kate Stoneb9c1b512016-09-06 20:57:50 +000084SBThread SBExecutionContext::GetThread() const {
85 SBThread sb_thread;
86 if (m_exe_ctx_sp) {
87 ThreadSP thread_sp(m_exe_ctx_sp->GetThreadSP());
88 if (thread_sp)
89 sb_thread.SetThread(thread_sp);
90 }
91 return sb_thread;
Enrico Granatae85e84a2014-10-01 20:43:45 +000092}
93
Kate Stoneb9c1b512016-09-06 20:57:50 +000094SBFrame SBExecutionContext::GetFrame() const {
95 SBFrame sb_frame;
96 if (m_exe_ctx_sp) {
97 StackFrameSP frame_sp(m_exe_ctx_sp->GetFrameSP());
98 if (frame_sp)
99 sb_frame.SetFrameSP(frame_sp);
100 }
101 return sb_frame;
Jim Inghamffc9f1d2014-10-14 01:20:07 +0000102}