Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/clang/lib/AST/Interp/Frame.h
35292 views
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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Defines the base class of interpreter and evaluator stack frames.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_AST_INTERP_FRAME_H
14
#define LLVM_CLANG_AST_INTERP_FRAME_H
15
16
#include "clang/Basic/SourceLocation.h"
17
#include "llvm/Support/raw_ostream.h"
18
19
namespace clang {
20
class FunctionDecl;
21
22
namespace interp {
23
24
/// Base class for stack frames, shared between VM and walker.
25
class Frame {
26
public:
27
virtual ~Frame();
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 interp
43
} // namespace clang
44
45
#endif
46
47