1*b3e77600SGreg Clayton //===-- OperatingSystemPython.h ---------------------------*- C++ -*-===//
2*b3e77600SGreg Clayton //
3*b3e77600SGreg Clayton //                     The LLVM Compiler Infrastructure
4*b3e77600SGreg Clayton //
5*b3e77600SGreg Clayton // This file is distributed under the University of Illinois Open Source
6*b3e77600SGreg Clayton // License. See LICENSE.TXT for details.
7*b3e77600SGreg Clayton //
8*b3e77600SGreg Clayton //===----------------------------------------------------------------------===//
9*b3e77600SGreg Clayton #ifndef LLDB_DISABLE_PYTHON
10*b3e77600SGreg Clayton 
11*b3e77600SGreg Clayton #ifndef liblldb_OperatingSystemPython_h_
12*b3e77600SGreg Clayton #define liblldb_OperatingSystemPython_h_
13*b3e77600SGreg Clayton 
14*b3e77600SGreg Clayton // C Includes
15*b3e77600SGreg Clayton // C++ Includes
16*b3e77600SGreg Clayton // Other libraries and framework includes
17*b3e77600SGreg Clayton #include "lldb/Target/OperatingSystem.h"
18*b3e77600SGreg Clayton 
19*b3e77600SGreg Clayton class DynamicRegisterInfo;
20*b3e77600SGreg Clayton 
21*b3e77600SGreg Clayton class OperatingSystemPython : public lldb_private::OperatingSystem
22*b3e77600SGreg Clayton {
23*b3e77600SGreg Clayton public:
24*b3e77600SGreg Clayton     //------------------------------------------------------------------
25*b3e77600SGreg Clayton     // Static Functions
26*b3e77600SGreg Clayton     //------------------------------------------------------------------
27*b3e77600SGreg Clayton     static lldb_private::OperatingSystem *
28*b3e77600SGreg Clayton     CreateInstance (lldb_private::Process *process, bool force);
29*b3e77600SGreg Clayton 
30*b3e77600SGreg Clayton     static void
31*b3e77600SGreg Clayton     Initialize();
32*b3e77600SGreg Clayton 
33*b3e77600SGreg Clayton     static void
34*b3e77600SGreg Clayton     Terminate();
35*b3e77600SGreg Clayton 
36*b3e77600SGreg Clayton     static const char *
37*b3e77600SGreg Clayton     GetPluginNameStatic();
38*b3e77600SGreg Clayton 
39*b3e77600SGreg Clayton     static const char *
40*b3e77600SGreg Clayton     GetPluginDescriptionStatic();
41*b3e77600SGreg Clayton 
42*b3e77600SGreg Clayton     //------------------------------------------------------------------
43*b3e77600SGreg Clayton     // Class Methods
44*b3e77600SGreg Clayton     //------------------------------------------------------------------
45*b3e77600SGreg Clayton     OperatingSystemPython (lldb_private::Process *process);
46*b3e77600SGreg Clayton 
47*b3e77600SGreg Clayton     virtual
48*b3e77600SGreg Clayton     ~OperatingSystemPython ();
49*b3e77600SGreg Clayton 
50*b3e77600SGreg Clayton     //------------------------------------------------------------------
51*b3e77600SGreg Clayton     // lldb_private::PluginInterface Methods
52*b3e77600SGreg Clayton     //------------------------------------------------------------------
53*b3e77600SGreg Clayton     virtual const char *
54*b3e77600SGreg Clayton     GetPluginName();
55*b3e77600SGreg Clayton 
56*b3e77600SGreg Clayton     virtual const char *
57*b3e77600SGreg Clayton     GetShortPluginName();
58*b3e77600SGreg Clayton 
59*b3e77600SGreg Clayton     virtual uint32_t
60*b3e77600SGreg Clayton     GetPluginVersion();
61*b3e77600SGreg Clayton 
62*b3e77600SGreg Clayton     //------------------------------------------------------------------
63*b3e77600SGreg Clayton     // lldb_private::OperatingSystem Methods
64*b3e77600SGreg Clayton     //------------------------------------------------------------------
65*b3e77600SGreg Clayton     virtual bool
66*b3e77600SGreg Clayton     UpdateThreadList (lldb_private::ThreadList &old_thread_list,
67*b3e77600SGreg Clayton                       lldb_private::ThreadList &new_thread_list);
68*b3e77600SGreg Clayton 
69*b3e77600SGreg Clayton     virtual void
70*b3e77600SGreg Clayton     ThreadWasSelected (lldb_private::Thread *thread);
71*b3e77600SGreg Clayton 
72*b3e77600SGreg Clayton     virtual lldb::RegisterContextSP
73*b3e77600SGreg Clayton     CreateRegisterContextForThread (lldb_private::Thread *thread);
74*b3e77600SGreg Clayton 
75*b3e77600SGreg Clayton     virtual lldb::StopInfoSP
76*b3e77600SGreg Clayton     CreateThreadStopReason (lldb_private::Thread *thread);
77*b3e77600SGreg Clayton 
78*b3e77600SGreg Clayton protected:
79*b3e77600SGreg Clayton 
80*b3e77600SGreg Clayton     DynamicRegisterInfo *
81*b3e77600SGreg Clayton     GetDynamicRegisterInfo ();
82*b3e77600SGreg Clayton 
83*b3e77600SGreg Clayton     lldb::ValueObjectSP m_thread_list_valobj_sp;
84*b3e77600SGreg Clayton     std::auto_ptr<DynamicRegisterInfo> m_register_info_ap;
85*b3e77600SGreg Clayton 
86*b3e77600SGreg Clayton };
87*b3e77600SGreg Clayton 
88*b3e77600SGreg Clayton #endif // #ifndef liblldb_OperatingSystemPython_h_
89*b3e77600SGreg Clayton #endif // #ifndef LLDB_DISABLE_PYTHON
90