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