brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · b67a77a Raw
46 lines · c
1//===--- Frame.h - Call frame for the VM and AST Walker ---------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Defines the base class of interpreter and evaluator stack frames.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_AST_INTERP_FRAME_H14#define LLVM_CLANG_AST_INTERP_FRAME_H15 16#include "clang/Basic/SourceLocation.h"17#include "llvm/Support/raw_ostream.h"18 19namespace clang {20class FunctionDecl;21 22namespace interp {23 24/// Base class for stack frames, shared between VM and walker.25class Frame {26public:27  virtual ~Frame() = default;28 29  /// Generates a human-readable description of the call site.30  virtual void describe(llvm::raw_ostream &OS) const = 0;31 32  /// Returns a pointer to the caller frame.33  virtual Frame *getCaller() const = 0;34 35  /// Returns the location of the call site.36  virtual SourceRange getCallRange() const = 0;37 38  /// Returns the called function's declaration.39  virtual const FunctionDecl *getCallee() const = 0;40};41 42} // namespace interp43} // namespace clang44 45#endif46