1 //===-- ExecutionContextScope.h ---------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_ExecutionContextScope_h_ 11 #define liblldb_ExecutionContextScope_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/lldb-private.h" 18 19 namespace lldb_private { 20 21 //---------------------------------------------------------------------- 22 /// @class ExecutionContextScope ExecutionContextScope.h "lldb/Symbol/ExecutionContextScope.h" 23 /// @brief Inherit from this if your object can reconstruct its 24 /// execution context. 25 /// 26 /// Many objects that have pointers back to parent execution context 27 /// objects can inherit from this pure virtual class can reconstruct 28 /// their execution context without having to keep a complete 29 /// ExecutionContext object in the object state. Examples of these 30 /// objects include: Process, Thread, RegisterContext and StackFrame. 31 /// 32 /// Bbjects can contain a valid pointer to an instance of this so they 33 /// can reconstruct the execution context. 34 /// 35 /// Objects that adhere to this protocol can reconstruct enough of a 36 /// execution context to allow functions that take a execution contexts 37 /// to be called. 38 //---------------------------------------------------------------------- 39 class ExecutionContextScope 40 { 41 public: 42 virtual ~ExecutionContextScope()43 ~ExecutionContextScope () {} 44 45 virtual lldb::TargetSP 46 CalculateTarget () = 0; 47 48 virtual lldb::ProcessSP 49 CalculateProcess () = 0; 50 51 virtual lldb::ThreadSP 52 CalculateThread () = 0; 53 54 virtual lldb::StackFrameSP 55 CalculateStackFrame () = 0; 56 57 //------------------------------------------------------------------ 58 /// Reconstruct the object's execution context into \a sc. 59 /// 60 /// The object should fill in as much of the ExecutionContextScope as it 61 /// can so function calls that require a execution context can be made 62 /// for the given object. 63 /// 64 /// @param[out] exe_ctx 65 /// A reference to an execution context object that gets filled 66 /// in. 67 //------------------------------------------------------------------ 68 virtual void 69 CalculateExecutionContext (ExecutionContext &exe_ctx) = 0; 70 }; 71 72 } // namespace lldb_private 73 74 #endif // liblldb_ExecutionContextScope_h_ 75