ThreadPlanStepInstruction.h revision 454916c0169502e4c8cf0f27ab61923f8b533dd0
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 ShouldStop (Event *event_ptr); 31 virtual bool StopOthers (); 32 virtual lldb::StateType GetPlanRunState (); 33 virtual bool WillStop (); 34 virtual bool MischiefManaged (); 35 36protected: 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 45private: 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 StackID m_stack_id; 54 StackID m_parent_frame_id; 55 56 DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepInstruction); 57 58}; 59 60 61} // namespace lldb_private 62 63#endif // liblldb_ThreadPlanStepInstruction_h_ 64