nixd
Loading...
Searching...
No Matches
Displacement.h
Go to the documentation of this file.
1/// \file
2/// \brief Get `nix::PosIdx` of an `nix::Expr`, from `nix::Displacement`.
3///
4/// "Displacement" is something used in variable lookup.
5
6#pragma once
7
8#include <nix/nixexpr.hh>
9
10namespace nixt {
11
12/// \brief Get `nix::PosIdx` of an `nix::Expr`, from `nix::Displacement`.
13/// \note This is based on dynamic_cast, so it is not very efficient.
14///
15/// The function actually invokes `displOf()` of the corresponding `Expr` type.
16nix::PosIdx displOf(const nix::Expr *E, nix::Displacement Displ);
17
18/// \note The function asserts `E->recursive`. Since normal `ExprAttrs` cannot
19/// do variable binding.
20nix::PosIdx displOf(const nix::ExprAttrs *E, nix::Displacement Displ);
21
22nix::PosIdx displOf(const nix::ExprLet *E, nix::Displacement Displ);
23
24nix::PosIdx displOf(const nix::ExprLambda *E, nix::Displacement Displ);
25
26} // namespace nixt
Access EvalCache in nix::EvalState.
Definition ArrayRef.h:7
nix::PosIdx displOf(const nix::Expr *E, nix::Displacement Displ)
Get nix::PosIdx of an nix::Expr, from nix::Displacement.