summaryrefslogtreecommitdiffstats
path: root/lldb/include/lldb/Target/ExecutionContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/include/lldb/Target/ExecutionContext.h')
-rw-r--r--lldb/include/lldb/Target/ExecutionContext.h93
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_
OpenPOWER on IntegriCloud