124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- StoppointCallbackContext.h ------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_StoppointCallbackContext_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_StoppointCallbackContext_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/ExecutionContext.h"
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @class StoppointCallbackContext StoppointCallbackContext.h "lldb/Breakpoint/StoppointCallbackContext.h"
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @brief Class holds the information that a breakpoint callback needs to evaluate this stop.
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// General Outline:
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// When we hit a breakpoint we need to package up whatever information is needed
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// to evaluate breakpoint commands and conditions.  This class is the container of
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// that information.
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass StoppointCallbackContext
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StoppointCallbackContext();
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
35f4124deeb9532044a38c0774ced872f2709347daGreg Clayton    StoppointCallbackContext(Event *event, const ExecutionContext &exe_ctx, bool synchronously = false);
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Clear the object's state.
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Sets the event, process and thread to NULL, and the frame index to an
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// invalid value.
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Clear ();
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Member variables
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Event *event;               // This is the event, the callback can modify this to indicate
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                // the meaning of the breakpoint hit
51f4124deeb9532044a38c0774ced872f2709347daGreg Clayton    ExecutionContextRef exe_ctx_ref; // This tells us where we have stopped, what thread.
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool is_synchronous;        // Is the callback being executed synchronously with the breakpoint,
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                // or asynchronously as the event is retrieved?
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_StoppointCallbackContext_h_
59