1 //===-- ThreadPlanStepInstruction.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_ThreadPlanStepInstruction_h_ 11 #define liblldb_ThreadPlanStepInstruction_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/lldb-private.h" 18 #include "lldb/Target/Thread.h" 19 #include "lldb/Target/ThreadPlan.h" 20 21 namespace lldb_private { 22 23 class ThreadPlanStepInstruction : public ThreadPlan 24 { 25 public: 26 virtual ~ThreadPlanStepInstruction (); 27 28 virtual void GetDescription (Stream *s, lldb::DescriptionLevel level); 29 virtual bool ValidatePlan (Stream *error); 30 virtual bool ShouldStop (Event *event_ptr); 31 virtual bool StopOthers (); 32 virtual lldb::StateType GetPlanRunState (); 33 virtual bool WillStop (); 34 virtual bool MischiefManaged (); 35 36 protected: 37 virtual bool DoPlanExplainsStop (Event *event_ptr); 38 39 ThreadPlanStepInstruction (Thread &thread, 40 bool step_over, 41 bool stop_others, 42 Vote stop_vote, 43 Vote run_vote); 44 45 private: 46 friend lldb::ThreadPlanSP 47 Thread::QueueThreadPlanForStepSingleInstruction (bool step_over, bool abort_other_plans, bool stop_other_threads); 48 49 lldb::addr_t m_instruction_addr; 50 bool m_stop_other_threads; 51 bool m_step_over; 52 // These two are used only for the step over case. 53 bool m_start_has_symbol; 54 StackID m_stack_id; 55 StackID m_parent_frame_id; 56 57 DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepInstruction); 58 59 }; 60 61 62 } // namespace lldb_private 63 64 #endif // liblldb_ThreadPlanStepInstruction_h_ 65