xref: /llvm-project/lldb/include/lldb/API/SBExecutionContext.h (revision f732157a9d067e4d300905c831a964222e0eadee)
1 //===-- SBExecutionContext.h -----------------------------------------*- C++
2 //-*-===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_API_SBEXECUTIONCONTEXT_H
11 #define LLDB_API_SBEXECUTIONCONTEXT_H
12 
13 #include "lldb/API/SBDefines.h"
14 
15 #include <cstdio>
16 #include <vector>
17 
18 namespace lldb_private {
19 class ScriptInterpreter;
20 namespace python {
21 class SWIGBridge;
22 }
23 } // namespace lldb_private
24 
25 namespace lldb {
26 
27 class LLDB_API SBExecutionContext {
28   friend class SBCommandInterpreter;
29 
30 public:
31   SBExecutionContext();
32 
33   SBExecutionContext(const lldb::SBExecutionContext &rhs);
34 
35   SBExecutionContext(const lldb::SBTarget &target);
36 
37   SBExecutionContext(const lldb::SBProcess &process);
38 
39   SBExecutionContext(lldb::SBThread thread); // can't be a const& because
40                                              // SBThread::get() isn't itself a
41                                              // const function
42 
43   SBExecutionContext(const lldb::SBFrame &frame);
44 
45   ~SBExecutionContext();
46 
47   const SBExecutionContext &operator=(const lldb::SBExecutionContext &rhs);
48 
49   SBTarget GetTarget() const;
50 
51   SBProcess GetProcess() const;
52 
53   SBThread GetThread() const;
54 
55   SBFrame GetFrame() const;
56 
57 protected:
58   friend class lldb_private::python::SWIGBridge;
59   friend class lldb_private::ScriptInterpreter;
60 
61   lldb_private::ExecutionContextRef *get() const;
62 
63   SBExecutionContext(lldb::ExecutionContextRefSP exe_ctx_ref_sp);
64 
65 private:
66   mutable lldb::ExecutionContextRefSP m_exe_ctx_sp;
67 };
68 
69 } // namespace lldb
70 
71 #endif // LLDB_API_SBEXECUTIONCONTEXT_H
72