xref: /llvm-project/lldb/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h (revision b3e776008bff022410508f762d0a376f8708849d)
1 //===-- OperatingSystemPython.h ---------------------------*- 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 #ifndef LLDB_DISABLE_PYTHON
10 
11 #ifndef liblldb_OperatingSystemPython_h_
12 #define liblldb_OperatingSystemPython_h_
13 
14 // C Includes
15 // C++ Includes
16 // Other libraries and framework includes
17 #include "lldb/Target/OperatingSystem.h"
18 
19 class DynamicRegisterInfo;
20 
21 class OperatingSystemPython : public lldb_private::OperatingSystem
22 {
23 public:
24     //------------------------------------------------------------------
25     // Static Functions
26     //------------------------------------------------------------------
27     static lldb_private::OperatingSystem *
28     CreateInstance (lldb_private::Process *process, bool force);
29 
30     static void
31     Initialize();
32 
33     static void
34     Terminate();
35 
36     static const char *
37     GetPluginNameStatic();
38 
39     static const char *
40     GetPluginDescriptionStatic();
41 
42     //------------------------------------------------------------------
43     // Class Methods
44     //------------------------------------------------------------------
45     OperatingSystemPython (lldb_private::Process *process);
46 
47     virtual
48     ~OperatingSystemPython ();
49 
50     //------------------------------------------------------------------
51     // lldb_private::PluginInterface Methods
52     //------------------------------------------------------------------
53     virtual const char *
54     GetPluginName();
55 
56     virtual const char *
57     GetShortPluginName();
58 
59     virtual uint32_t
60     GetPluginVersion();
61 
62     //------------------------------------------------------------------
63     // lldb_private::OperatingSystem Methods
64     //------------------------------------------------------------------
65     virtual bool
66     UpdateThreadList (lldb_private::ThreadList &old_thread_list,
67                       lldb_private::ThreadList &new_thread_list);
68 
69     virtual void
70     ThreadWasSelected (lldb_private::Thread *thread);
71 
72     virtual lldb::RegisterContextSP
73     CreateRegisterContextForThread (lldb_private::Thread *thread);
74 
75     virtual lldb::StopInfoSP
76     CreateThreadStopReason (lldb_private::Thread *thread);
77 
78 protected:
79 
80     DynamicRegisterInfo *
81     GetDynamicRegisterInfo ();
82 
83     lldb::ValueObjectSP m_thread_list_valobj_sp;
84     std::auto_ptr<DynamicRegisterInfo> m_register_info_ap;
85 
86 };
87 
88 #endif // #ifndef liblldb_OperatingSystemPython_h_
89 #endif // #ifndef LLDB_DISABLE_PYTHON
90