118a9135dSAdrian McCarthy //===-- TargetThreadWindows.h -----------------------------------*- C++ -*-===//
218a9135dSAdrian McCarthy //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
618a9135dSAdrian McCarthy //
718a9135dSAdrian McCarthy //===----------------------------------------------------------------------===//
818a9135dSAdrian McCarthy 
918a9135dSAdrian McCarthy #ifndef liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
1018a9135dSAdrian McCarthy #define liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
1118a9135dSAdrian McCarthy 
1218a9135dSAdrian McCarthy //#include "ForwardDecl.h"
1318a9135dSAdrian McCarthy #include "lldb/Host/HostThread.h"
1418a9135dSAdrian McCarthy #include "lldb/Target/Thread.h"
15b9c1b51eSKate Stone #include "lldb/lldb-forward.h"
1618a9135dSAdrian McCarthy 
174ad5def9SAdrian McCarthy #include "RegisterContextWindows.h"
184ad5def9SAdrian McCarthy 
19b9c1b51eSKate Stone namespace lldb_private {
2018a9135dSAdrian McCarthy class ProcessWindows;
2118a9135dSAdrian McCarthy class HostThread;
2218a9135dSAdrian McCarthy class StackFrame;
2318a9135dSAdrian McCarthy 
24b9c1b51eSKate Stone class TargetThreadWindows : public lldb_private::Thread {
2518a9135dSAdrian McCarthy public:
2618a9135dSAdrian McCarthy   TargetThreadWindows(ProcessWindows &process, const HostThread &thread);
2718a9135dSAdrian McCarthy   virtual ~TargetThreadWindows();
2818a9135dSAdrian McCarthy 
2918a9135dSAdrian McCarthy   // lldb_private::Thread overrides
3018a9135dSAdrian McCarthy   void RefreshStateAfterStop() override;
3118a9135dSAdrian McCarthy   void WillResume(lldb::StateType resume_state) override;
3218a9135dSAdrian McCarthy   void DidStop() override;
334ad5def9SAdrian McCarthy   lldb::RegisterContextSP GetRegisterContext() override;
344ad5def9SAdrian McCarthy   lldb::RegisterContextSP
354ad5def9SAdrian McCarthy   CreateRegisterContextForFrame(StackFrame *frame) override;
3618a9135dSAdrian McCarthy   bool CalculateStopInfo() override;
3718a9135dSAdrian McCarthy 
380fd67b53SStella Stamenova   Status DoResume();
3918a9135dSAdrian McCarthy 
GetHostThread()40b9c1b51eSKate Stone   HostThread GetHostThread() const { return m_host_thread; }
4118a9135dSAdrian McCarthy 
4218a9135dSAdrian McCarthy private:
4345d8134cSStella Stamenova   lldb::RegisterContextSP m_thread_reg_ctx_sp;
4418a9135dSAdrian McCarthy   HostThread m_host_thread;
4518a9135dSAdrian McCarthy };
4645d8134cSStella Stamenova } // namespace lldb_private
4718a9135dSAdrian McCarthy 
4818a9135dSAdrian McCarthy #endif
49