1 //===-- TargetThreadWindows.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 
10 #ifndef liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
11 #define liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
12 
13 //#include "ForwardDecl.h"
14 #include "lldb/Host/HostThread.h"
15 #include "lldb/Target/Thread.h"
16 #include "lldb/lldb-forward.h"
17 
18 #include "RegisterContextWindows.h"
19 
20 namespace lldb_private {
21 class ProcessWindows;
22 class HostThread;
23 class StackFrame;
24 
25 class TargetThreadWindows : public lldb_private::Thread {
26 public:
27   TargetThreadWindows(ProcessWindows &process, const HostThread &thread);
28   virtual ~TargetThreadWindows();
29 
30   // lldb_private::Thread overrides
31   void RefreshStateAfterStop() override;
32   void WillResume(lldb::StateType resume_state) override;
33   void DidStop() override;
34   lldb::RegisterContextSP GetRegisterContext() override;
35   lldb::RegisterContextSP
36   CreateRegisterContextForFrame(StackFrame *frame) override;
37   bool CalculateStopInfo() override;
38   Unwind *GetUnwinder() override;
39 
40   Status DoResume();
41 
42   HostThread GetHostThread() const { return m_host_thread; }
43 
44 private:
45   lldb::RegisterContextSP m_thread_reg_ctx_sp;
46   HostThread m_host_thread;
47 };
48 } // namespace lldb_private
49 
50 #endif
51