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