| //===-- ExecutionContext.h --------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| |
| #ifndef liblldb_ExecutionContext_h_ |
| #define liblldb_ExecutionContext_h_ |
| |
| #include "lldb/lldb-private.h" |
| |
| namespace lldb_private { |
| |
| //---------------------------------------------------------------------- |
| /// @class ExecutionContext ExecutionContext.h "lldb/Target/ExecutionContext.h" |
| /// @brief A class that contains an execution context. |
| /// |
| /// This baton object can be passed into any function that requires |
| /// a context that specifies a process, thread and frame. |
| /// |
| /// Many lldb functions can evaluate or act upon a specific |
| /// execution context. An expression could be evaluated for a specific |
| /// process, thread, and frame. The thread object contains frames and |
| /// can return StackFrame objects given a valid frame index using: |
| /// StackFrame * Thread::GetFrameAtIndex (uint32_t idx). |
| //---------------------------------------------------------------------- |
| class ExecutionContext |
| { |
| public: |
| //------------------------------------------------------------------ |
| /// Default Constructor. |
| /// |
| /// Initialize with NULL process and thread, and invalid frame |
| /// index. |
| //------------------------------------------------------------------ |
| ExecutionContext(); |
| |
| |
| ExecutionContext (Target* t, bool fill_current_process_thread_frame = true); |
| //------------------------------------------------------------------ |
| /// Construct with process, thread, and frame index. |
| /// |
| /// Initialize with process \a p, thread \a t, and frame index \a f. |
| /// |
| /// @param[in] process |
| /// The process for this execution context. |
| /// |
| /// @param[in] thread |
| /// The thread for this execution context. |
| /// |
| /// @param[in] frame |
| /// The frame index for this execution context. |
| //------------------------------------------------------------------ |
| ExecutionContext (Process* process, |
| Thread *thread = NULL, |
| StackFrame * frame = NULL); |
| |
| |
| ExecutionContext (ExecutionContextScope *exe_scope); |
| |
| ExecutionContext (ExecutionContextScope &exe_scope); |
| |
| //------------------------------------------------------------------ |
| /// Clear the object's state. |
| /// |
| /// Sets the process and thread to NULL, and the frame index to an |
| /// invalid value. |
| //------------------------------------------------------------------ |
| void |
| Clear (); |
| |
| RegisterContext * |
| GetRegisterContext () const; |
| |
| |
| ExecutionContextScope * |
| GetBestExecutionContextScope () const; |
| //------------------------------------------------------------------ |
| // Member variables |
| //------------------------------------------------------------------ |
| Target *target; ///< The target that owns the process/thread/frame |
| Process *process; ///< The process that owns the thread/frame |
| Thread *thread; ///< The thread that owns the frame |
| StackFrame *frame; ///< The stack frame in thread. |
| }; |
| |
| } // namespace lldb_private |
| |
| #endif // liblldb_ExecutionContext_h_ |