ThreadPlanStepInstruction.h revision 41ce4f1706ddd3a092c331ff15917e7f600f2e94
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 21namespace lldb_private { 22 23class ThreadPlanStepInstruction : public ThreadPlan 24{ 25public: 26 virtual ~ThreadPlanStepInstruction (); 27 28 virtual void GetDescription (Stream *s, lldb::DescriptionLevel level); 29 virtual bool ValidatePlan (Stream *error); 30 virtual bool PlanExplainsStop (); 31 virtual bool ShouldStop (Event *event_ptr); 32 virtual bool StopOthers (); 33 virtual lldb::StateType GetPlanRunState (); 34 virtual bool WillStop (); 35 virtual bool MischiefManaged (); 36 37protected: 38 ThreadPlanStepInstruction (Thread &thread, 39 bool step_over, 40 bool stop_others, 41 Vote stop_vote, 42 Vote run_vote); 43 44private: 45 friend ThreadPlan * 46 Thread::QueueThreadPlanForStepSingleInstruction (bool step_over, bool abort_other_plans, bool stop_other_threads); 47 48 lldb::addr_t m_instruction_addr; 49 bool m_stop_other_threads; 50 bool m_step_over; 51 // This is used only for the step over case. 52 StackID m_stack_id; 53 54 DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepInstruction); 55 56}; 57 58 59} // namespace lldb_private 60 61#endif // liblldb_ThreadPlanStepInstruction_h_ 62