1254721Semaste//===-- StoppointCallbackContext.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_StoppointCallbackContext_h_
11254721Semaste#define liblldb_StoppointCallbackContext_h_
12254721Semaste
13254721Semaste#include "lldb/lldb-private.h"
14254721Semaste#include "lldb/Target/ExecutionContext.h"
15254721Semaste
16254721Semastenamespace lldb_private {
17254721Semaste
18254721Semaste//----------------------------------------------------------------------
19254721Semaste/// @class StoppointCallbackContext StoppointCallbackContext.h "lldb/Breakpoint/StoppointCallbackContext.h"
20254721Semaste/// @brief Class holds the information that a breakpoint callback needs to evaluate this stop.
21254721Semaste//----------------------------------------------------------------------
22254721Semaste
23254721Semaste//----------------------------------------------------------------------
24254721Semaste/// General Outline:
25254721Semaste/// When we hit a breakpoint we need to package up whatever information is needed
26254721Semaste/// to evaluate breakpoint commands and conditions.  This class is the container of
27254721Semaste/// that information.
28254721Semaste//----------------------------------------------------------------------
29254721Semaste
30254721Semasteclass StoppointCallbackContext
31254721Semaste{
32254721Semastepublic:
33254721Semaste    StoppointCallbackContext();
34254721Semaste
35254721Semaste    StoppointCallbackContext(Event *event, const ExecutionContext &exe_ctx, bool synchronously = false);
36254721Semaste
37254721Semaste    //------------------------------------------------------------------
38254721Semaste    /// Clear the object's state.
39254721Semaste    ///
40254721Semaste    /// Sets the event, process and thread to NULL, and the frame index to an
41254721Semaste    /// invalid value.
42254721Semaste    //------------------------------------------------------------------
43254721Semaste    void
44254721Semaste    Clear ();
45254721Semaste
46254721Semaste    //------------------------------------------------------------------
47254721Semaste    // Member variables
48254721Semaste    //------------------------------------------------------------------
49254721Semaste    Event *event;               // This is the event, the callback can modify this to indicate
50254721Semaste                                // the meaning of the breakpoint hit
51254721Semaste    ExecutionContextRef exe_ctx_ref; // This tells us where we have stopped, what thread.
52254721Semaste    bool is_synchronous;        // Is the callback being executed synchronously with the breakpoint,
53254721Semaste                                // or asynchronously as the event is retrieved?
54254721Semaste};
55254721Semaste
56254721Semaste} // namespace lldb_private
57254721Semaste
58254721Semaste#endif  // liblldb_StoppointCallbackContext_h_
59