//===-- ExecutionContextScope.h ---------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_ExecutionContextScope_h_
#define liblldb_ExecutionContextScope_h_

#include "lldb/lldb-private.h"

namespace lldb_private {

//----------------------------------------------------------------------
/// @class ExecutionContextScope ExecutionContextScope.h
/// "lldb/Symbol/ExecutionContextScope.h" Inherit from this if your object can
/// reconstruct its
///        execution context.
///
/// Many objects that have pointers back to parent execution context objects
/// can inherit from this pure virtual class can reconstruct their execution
/// context without having to keep a complete ExecutionContext object in the
/// object state. Examples of these objects include: Process, Thread,
/// RegisterContext and StackFrame.
///
/// Objects can contain a valid pointer to an instance of this so they can
/// reconstruct the execution context.
///
/// Objects that adhere to this protocol can reconstruct enough of a execution
/// context to allow functions that take a execution contexts to be called.
//----------------------------------------------------------------------
class ExecutionContextScope {
public:
  virtual ~ExecutionContextScope() {}

  virtual lldb::TargetSP CalculateTarget() = 0;

  virtual lldb::ProcessSP CalculateProcess() = 0;

  virtual lldb::ThreadSP CalculateThread() = 0;

  virtual lldb::StackFrameSP CalculateStackFrame() = 0;

  //------------------------------------------------------------------
  /// Reconstruct the object's execution context into \a sc.
  ///
  /// The object should fill in as much of the ExecutionContextScope as it can
  /// so function calls that require a execution context can be made for the
  /// given object.
  ///
  /// @param[out] exe_ctx
  ///     A reference to an execution context object that gets filled
  ///     in.
  //------------------------------------------------------------------
  virtual void CalculateExecutionContext(ExecutionContext &exe_ctx) = 0;
};

} // namespace lldb_private

#endif // liblldb_ExecutionContextScope_h_
