diff options
Diffstat (limited to 'lldb/include/lldb/Target/ExecutionContext.h')
-rw-r--r-- | lldb/include/lldb/Target/ExecutionContext.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/lldb/include/lldb/Target/ExecutionContext.h b/lldb/include/lldb/Target/ExecutionContext.h new file mode 100644 index 00000000000..cc925cff997 --- /dev/null +++ b/lldb/include/lldb/Target/ExecutionContext.h @@ -0,0 +1,93 @@ +//===-- 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_ |