//===-- ThreadPlanShouldStopHere.h ------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_TARGET_THREADPLANSHOULDSTOPHERE_H #define LLDB_TARGET_THREADPLANSHOULDSTOPHERE_H #include "lldb/Target/ThreadPlan.h" namespace lldb_private { // This is an interface that ThreadPlans can adopt to allow flexible // modifications of the behavior when a thread plan comes to a place where it // would ordinarily stop. If such modification makes sense for your plan, // inherit from this class, and when you would be about to stop (in your // ShouldStop method), call InvokeShouldStopHereCallback, passing in the frame // comparison between where the step operation started and where you arrived. // If it returns true, then QueueStepOutFromHere will queue the plan to execute // instead of stopping. // // The classic example of the use of this is ThreadPlanStepInRange not stopping // in frames that have no debug information. // // This class also defines a set of flags to control general aspects of this // "ShouldStop" behavior. // A class implementing this protocol needs to define a default set of flags, // and can provide access to // changing that default flag set if it wishes. class ThreadPlanShouldStopHere { … }; } // namespace lldb_private #endif // LLDB_TARGET_THREADPLANSHOULDSTOPHERE_H