1 //===-- ThreadPlanStepThrough.h ---------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_ThreadPlanStepThrough_h_
11 #define liblldb_ThreadPlanStepThrough_h_
15 // Other libraries and framework includes
17 #include "lldb/Target/Thread.h"
18 #include "lldb/Target/ThreadPlan.h"
20 namespace lldb_private {
22 class ThreadPlanStepThrough : public ThreadPlan
25 virtual ~ThreadPlanStepThrough ();
27 virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
28 virtual bool ValidatePlan (Stream *error);
29 virtual bool ShouldStop (Event *event_ptr);
30 virtual bool StopOthers ();
31 virtual lldb::StateType GetPlanRunState ();
32 virtual bool WillStop ();
33 virtual bool MischiefManaged ();
34 virtual void DidPush();
37 virtual bool DoPlanExplainsStop (Event *event_ptr);
38 virtual bool DoWillResume (lldb::StateType resume_state, bool current_plan);
40 ThreadPlanStepThrough (Thread &thread,
41 StackID &return_stack_id,
45 LookForPlanToStepThroughFromCurrentPC ();
48 HitOurBackstopBreakpoint();
51 friend lldb::ThreadPlanSP
52 Thread::QueueThreadPlanForStepThrough (StackID &return_stack_id,
53 bool abort_other_plans,
56 void ClearBackstopBreakpoint();
58 lldb::ThreadPlanSP m_sub_plan_sp;
59 lldb::addr_t m_start_address;
60 lldb::break_id_t m_backstop_bkpt_id;
61 lldb::addr_t m_backstop_addr;
62 StackID m_return_stack_id;
65 DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepThrough);
69 } // namespace lldb_private
71 #endif // liblldb_ThreadPlanStepThrough_h_