nixd
Loading...
Searching...
No Matches
Kinds.cpp
Go to the documentation of this file.
1#include "nixt/Kinds.h"
2
3#include <nix/nixexpr.hh>
4
5namespace nixt {
6
7using namespace ek;
8
9ExprKind kindOf(const nix::Expr &E) {
10 const nix::Expr *P = &E;
11#define NIX_EXPR(EXPR) \
12 if (dynamic_cast<const nix::EXPR *>(P)) { \
13 return EK_##EXPR; \
14 }
15#include "nixt/Nodes.inc"
16 assert(false &&
17 "Cannot dynamic-cast to nix::Expr*, missing entries in Nodes.inc?");
18 return LastExprKind;
19#undef NIX_EXPR
20}
21
22const char *nameOf(ExprKind Kind) {
23 switch (Kind) {
24#define NIX_EXPR(EXPR) \
25 case EK_##EXPR: \
26 return #EXPR;
27#include "nixt/Nodes.inc"
28#undef NIX_EXPR
29 case LastExprKind:
30 break;
31 }
32 assert(false && "Unknown ExprKind");
33 return "<unknown>";
34}
35
36} // namespace nixt
Determine the kind of nix::Expr.
ExprKind
Enumeration of all kinds of nix::Expr.
Definition Kinds.h:24
@ LastExprKind
Definition Kinds.h:31
Access EvalCache in nix::EvalState.
Definition ArrayRef.h:7
ek::ExprKind kindOf(const nix::Expr &E)
Determine the kind of nix::Expr.
Definition Kinds.cpp:9
const char * nameOf(ek::ExprKind Kind)
Get printable name of some kind.
Definition Kinds.cpp:22