1254721Semaste//===-- ThreadPlanRunToAddress.h --------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef liblldb_ThreadPlanRunToAddress_h_ 11254721Semaste#define liblldb_ThreadPlanRunToAddress_h_ 12254721Semaste 13254721Semaste// C Includes 14254721Semaste// C++ Includes 15254721Semaste#include <vector> 16254721Semaste 17254721Semaste// Other libraries and framework includes 18254721Semaste// Project includes 19254721Semaste#include "lldb/lldb-private.h" 20254721Semaste#include "lldb/Target/ThreadPlan.h" 21254721Semaste 22254721Semastenamespace lldb_private { 23254721Semaste 24254721Semasteclass ThreadPlanRunToAddress : public ThreadPlan 25254721Semaste{ 26254721Semastepublic: 27254721Semaste ThreadPlanRunToAddress (Thread &thread, 28254721Semaste Address &address, 29254721Semaste bool stop_others); 30254721Semaste 31254721Semaste ThreadPlanRunToAddress (Thread &thread, 32254721Semaste lldb::addr_t address, 33254721Semaste bool stop_others); 34254721Semaste 35254721Semaste ThreadPlanRunToAddress (Thread &thread, 36254721Semaste const std::vector<lldb::addr_t> &addresses, 37254721Semaste bool stop_others); 38254721Semaste 39254721Semaste 40254721Semaste virtual 41254721Semaste ~ThreadPlanRunToAddress (); 42254721Semaste 43254721Semaste virtual void 44254721Semaste GetDescription (Stream *s, lldb::DescriptionLevel level); 45254721Semaste 46254721Semaste virtual bool 47254721Semaste ValidatePlan (Stream *error); 48254721Semaste 49254721Semaste virtual bool 50254721Semaste ShouldStop (Event *event_ptr); 51254721Semaste 52254721Semaste virtual bool 53254721Semaste StopOthers (); 54254721Semaste 55254721Semaste virtual void 56254721Semaste SetStopOthers (bool new_value); 57254721Semaste 58254721Semaste virtual lldb::StateType 59254721Semaste GetPlanRunState (); 60254721Semaste 61254721Semaste virtual bool 62254721Semaste WillStop (); 63254721Semaste 64254721Semaste virtual bool 65254721Semaste MischiefManaged (); 66254721Semaste 67254721Semasteprotected: 68254721Semaste virtual bool 69254721Semaste DoPlanExplainsStop (Event *event_ptr); 70254721Semaste 71254721Semaste void SetInitialBreakpoints(); 72254721Semaste bool AtOurAddress(); 73254721Semasteprivate: 74254721Semaste bool m_stop_others; 75254721Semaste std::vector<lldb::addr_t> m_addresses; // This is the address we are going to run to. 76254721Semaste // TODO: Would it be useful to have multiple addresses? 77254721Semaste std::vector<lldb::break_id_t> m_break_ids; // This is the breakpoint we are using to stop us at m_address. 78254721Semaste 79254721Semaste DISALLOW_COPY_AND_ASSIGN (ThreadPlanRunToAddress); 80254721Semaste 81254721Semaste}; 82254721Semaste 83254721Semaste} // namespace lldb_private 84254721Semaste 85254721Semaste#endif // liblldb_ThreadPlanRunToAddress_h_ 86