nixd
Loading...
Searching...
No Matches
HookExpr.h
Go to the documentation of this file.
1#pragma once
2
3#include <nix/nixexpr.hh>
4
5#include <map>
6
7namespace nixt {
8
9using ValueMap = std::map<std::uintptr_t, nix::Value>;
10using EnvMap = std::map<std::uintptr_t, nix::Env *>;
11
12struct HookExprAssert : nix::ExprAssert {
15 std::uintptr_t Handle;
16 HookExprAssert(nix::ExprAssert E, ValueMap &VMap, EnvMap &EMap,
17 std::uintptr_t Handle)
18 : nix::ExprAssert(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
19 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
20 std::string getName();
21};
22
23struct HookExprAttrs : nix::ExprAttrs {
26 std::uintptr_t Handle;
27 HookExprAttrs(nix::ExprAttrs E, ValueMap &VMap, EnvMap &EMap,
28 std::uintptr_t Handle)
29 : nix::ExprAttrs(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
30 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
31 std::string getName();
32};
33
34struct HookExprCall : nix::ExprCall {
37 std::uintptr_t Handle;
38 HookExprCall(nix::ExprCall E, ValueMap &VMap, EnvMap &EMap,
39 std::uintptr_t Handle)
40 : nix::ExprCall(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
41 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
42 std::string getName();
43};
44
45struct HookExprConcatStrings : nix::ExprConcatStrings {
48 std::uintptr_t Handle;
49 HookExprConcatStrings(nix::ExprConcatStrings E, ValueMap &VMap, EnvMap &EMap,
50 std::uintptr_t Handle)
51 : nix::ExprConcatStrings(std::move(E)), VMap(VMap), EMap(EMap),
52 Handle(Handle) {}
53 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
54 std::string getName();
55};
56
57struct HookExprFloat : nix::ExprFloat {
60 std::uintptr_t Handle;
61 HookExprFloat(nix::ExprFloat E, ValueMap &VMap, EnvMap &EMap,
62 std::uintptr_t Handle)
63 : nix::ExprFloat(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
64 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
65 std::string getName();
66};
67
68struct HookExprIf : nix::ExprIf {
71 std::uintptr_t Handle;
72 HookExprIf(nix::ExprIf E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
73 : nix::ExprIf(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
74 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
75 std::string getName();
76};
77
78struct HookExprInt : nix::ExprInt {
81 std::uintptr_t Handle;
82 HookExprInt(nix::ExprInt E, ValueMap &VMap, EnvMap &EMap,
83 std::uintptr_t Handle)
84 : nix::ExprInt(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
85 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
86 std::string getName();
87};
88
89struct HookExprLambda : nix::ExprLambda {
92 std::uintptr_t Handle;
93 HookExprLambda(nix::ExprLambda E, ValueMap &VMap, EnvMap &EMap,
94 std::uintptr_t Handle)
95 : nix::ExprLambda(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
96 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
97 std::string getName();
98};
99
100struct HookExprLet : nix::ExprLet {
103 std::uintptr_t Handle;
104 HookExprLet(nix::ExprLet E, ValueMap &VMap, EnvMap &EMap,
105 std::uintptr_t Handle)
106 : nix::ExprLet(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
107 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
108 std::string getName();
109};
110
111struct HookExprList : nix::ExprList {
114 std::uintptr_t Handle;
115 HookExprList(nix::ExprList E, ValueMap &VMap, EnvMap &EMap,
116 std::uintptr_t Handle)
117 : nix::ExprList(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
118 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
119 std::string getName();
120};
121
122struct HookExprOpAnd : nix::ExprOpAnd {
125 std::uintptr_t Handle;
126 HookExprOpAnd(nix::ExprOpAnd E, ValueMap &VMap, EnvMap &EMap,
127 std::uintptr_t Handle)
128 : nix::ExprOpAnd(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
129 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
130 std::string getName();
131};
132
133struct HookExprOpConcatLists : nix::ExprOpConcatLists {
136 std::uintptr_t Handle;
137 HookExprOpConcatLists(nix::ExprOpConcatLists E, ValueMap &VMap, EnvMap &EMap,
138 std::uintptr_t Handle)
139 : nix::ExprOpConcatLists(std::move(E)), VMap(VMap), EMap(EMap),
140 Handle(Handle) {}
141 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
142 std::string getName();
143};
144
145struct HookExprOpEq : nix::ExprOpEq {
148 std::uintptr_t Handle;
149 HookExprOpEq(nix::ExprOpEq E, ValueMap &VMap, EnvMap &EMap,
150 std::uintptr_t Handle)
151 : nix::ExprOpEq(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
152 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
153 std::string getName();
154};
155
156struct HookExprOpHasAttr : nix::ExprOpHasAttr {
159 std::uintptr_t Handle;
160 HookExprOpHasAttr(nix::ExprOpHasAttr E, ValueMap &VMap, EnvMap &EMap,
161 std::uintptr_t Handle)
162 : nix::ExprOpHasAttr(std::move(E)), VMap(VMap), EMap(EMap),
163 Handle(Handle) {}
164 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
165 std::string getName();
166};
167
168struct HookExprOpImpl : nix::ExprOpImpl {
171 std::uintptr_t Handle;
172 HookExprOpImpl(nix::ExprOpImpl E, ValueMap &VMap, EnvMap &EMap,
173 std::uintptr_t Handle)
174 : nix::ExprOpImpl(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
175 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
176 std::string getName();
177};
178
179struct HookExprOpNEq : nix::ExprOpNEq {
182 std::uintptr_t Handle;
183 HookExprOpNEq(nix::ExprOpNEq E, ValueMap &VMap, EnvMap &EMap,
184 std::uintptr_t Handle)
185 : nix::ExprOpNEq(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
186 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
187 std::string getName();
188};
189
190struct HookExprOpNot : nix::ExprOpNot {
193 std::uintptr_t Handle;
194 HookExprOpNot(nix::ExprOpNot E, ValueMap &VMap, EnvMap &EMap,
195 std::uintptr_t Handle)
196 : nix::ExprOpNot(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
197 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
198 std::string getName();
199};
200
201struct HookExprOpOr : nix::ExprOpOr {
204 std::uintptr_t Handle;
205 HookExprOpOr(nix::ExprOpOr E, ValueMap &VMap, EnvMap &EMap,
206 std::uintptr_t Handle)
207 : nix::ExprOpOr(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
208 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
209 std::string getName();
210};
211
212struct HookExprOpUpdate : nix::ExprOpUpdate {
215 std::uintptr_t Handle;
216 HookExprOpUpdate(nix::ExprOpUpdate E, ValueMap &VMap, EnvMap &EMap,
217 std::uintptr_t Handle)
218 : nix::ExprOpUpdate(std::move(E)), VMap(VMap), EMap(EMap),
219 Handle(Handle) {}
220 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
221 std::string getName();
222};
223
224struct HookExprPath : nix::ExprPath {
227 std::uintptr_t Handle;
228 HookExprPath(nix::ExprPath E, ValueMap &VMap, EnvMap &EMap,
229 std::uintptr_t Handle)
230 : nix::ExprPath(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {
231 v.mkPath(&*accessor, s.c_str());
232 }
233 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
234 std::string getName();
235};
236
237struct HookExprPos : nix::ExprPos {
240 std::uintptr_t Handle;
241 HookExprPos(nix::ExprPos E, ValueMap &VMap, EnvMap &EMap,
242 std::uintptr_t Handle)
243 : nix::ExprPos(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
244 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
245 std::string getName();
246};
247
248struct HookExprSelect : nix::ExprSelect {
251 std::uintptr_t Handle;
252 HookExprSelect(nix::ExprSelect E, ValueMap &VMap, EnvMap &EMap,
253 std::uintptr_t Handle)
254 : nix::ExprSelect(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
255 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
256 std::string getName();
257};
258
259struct HookExprString : nix::ExprString {
262 std::uintptr_t Handle;
263 HookExprString(nix::ExprString E, ValueMap &VMap, EnvMap &EMap,
264 std::uintptr_t Handle)
265 : nix::ExprString(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {
266 v.mkString(s.data());
267 }
268 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
269 std::string getName();
270};
271
272struct HookExprVar : nix::ExprVar {
275 std::uintptr_t Handle;
276 HookExprVar(nix::ExprVar E, ValueMap &VMap, EnvMap &EMap,
277 std::uintptr_t Handle)
278 : nix::ExprVar(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
279 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
280 std::string getName();
281};
282
283struct HookExprWith : nix::ExprWith {
286 std::uintptr_t Handle;
287 HookExprWith(nix::ExprWith E, ValueMap &VMap, EnvMap &EMap,
288 std::uintptr_t Handle)
289 : nix::ExprWith(std::move(E)), VMap(VMap), EMap(EMap), Handle(Handle) {}
290 void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override;
291 std::string getName();
292};
293} // namespace nixt
Definition Kinds.h:6
Access EvalCache in nix::EvalState.
Definition ArrayRef.h:7
std::map< std::uintptr_t, nix::Env * > EnvMap
Definition HookExpr.h:10
std::map< std::uintptr_t, nix::Value > ValueMap
Definition HookExpr.h:9
std::string getName()
HookExprAssert(nix::ExprAssert E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:16
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:15
ValueMap & VMap
Definition HookExpr.h:13
ValueMap & VMap
Definition HookExpr.h:24
std::string getName()
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
HookExprAttrs(nix::ExprAttrs E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:27
std::uintptr_t Handle
Definition HookExpr.h:26
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::string getName()
ValueMap & VMap
Definition HookExpr.h:35
HookExprCall(nix::ExprCall E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:38
std::uintptr_t Handle
Definition HookExpr.h:37
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:48
HookExprConcatStrings(nix::ExprConcatStrings E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:49
std::string getName()
ValueMap & VMap
Definition HookExpr.h:58
std::uintptr_t Handle
Definition HookExpr.h:60
HookExprFloat(nix::ExprFloat E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:61
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:71
HookExprIf(nix::ExprIf E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:72
ValueMap & VMap
Definition HookExpr.h:69
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::string getName()
EnvMap & EMap
Definition HookExpr.h:70
HookExprInt(nix::ExprInt E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:82
ValueMap & VMap
Definition HookExpr.h:79
std::string getName()
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
EnvMap & EMap
Definition HookExpr.h:80
std::uintptr_t Handle
Definition HookExpr.h:81
HookExprLambda(nix::ExprLambda E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:93
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:92
std::string getName()
ValueMap & VMap
Definition HookExpr.h:90
HookExprLet(nix::ExprLet E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:104
std::string getName()
std::uintptr_t Handle
Definition HookExpr.h:103
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
ValueMap & VMap
Definition HookExpr.h:101
std::uintptr_t Handle
Definition HookExpr.h:114
HookExprList(nix::ExprList E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:115
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::string getName()
ValueMap & VMap
Definition HookExpr.h:112
std::string getName()
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:125
HookExprOpAnd(nix::ExprOpAnd E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:126
ValueMap & VMap
Definition HookExpr.h:123
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
HookExprOpConcatLists(nix::ExprOpConcatLists E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:137
HookExprOpEq(nix::ExprOpEq E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:149
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
ValueMap & VMap
Definition HookExpr.h:146
std::uintptr_t Handle
Definition HookExpr.h:148
std::string getName()
std::uintptr_t Handle
Definition HookExpr.h:159
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
HookExprOpHasAttr(nix::ExprOpHasAttr E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:160
std::uintptr_t Handle
Definition HookExpr.h:171
HookExprOpImpl(nix::ExprOpImpl E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:172
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::string getName()
std::string getName()
std::uintptr_t Handle
Definition HookExpr.h:182
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
HookExprOpNEq(nix::ExprOpNEq E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:183
ValueMap & VMap
Definition HookExpr.h:180
std::string getName()
HookExprOpNot(nix::ExprOpNot E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:194
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:193
ValueMap & VMap
Definition HookExpr.h:191
std::uintptr_t Handle
Definition HookExpr.h:204
ValueMap & VMap
Definition HookExpr.h:202
std::string getName()
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
HookExprOpOr(nix::ExprOpOr E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:205
std::string getName()
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:215
HookExprOpUpdate(nix::ExprOpUpdate E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:216
std::string getName()
std::uintptr_t Handle
Definition HookExpr.h:227
HookExprPath(nix::ExprPath E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:228
ValueMap & VMap
Definition HookExpr.h:225
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:240
ValueMap & VMap
Definition HookExpr.h:238
HookExprPos(nix::ExprPos E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:241
std::string getName()
std::string getName()
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:251
HookExprSelect(nix::ExprSelect E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:252
std::string getName()
HookExprString(nix::ExprString E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:263
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::uintptr_t Handle
Definition HookExpr.h:262
ValueMap & VMap
Definition HookExpr.h:273
std::uintptr_t Handle
Definition HookExpr.h:275
std::string getName()
HookExprVar(nix::ExprVar E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:276
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
void eval(nix::EvalState &State, nix::Env &Env, nix::Value &V) override
std::string getName()
ValueMap & VMap
Definition HookExpr.h:284
HookExprWith(nix::ExprWith E, ValueMap &VMap, EnvMap &EMap, std::uintptr_t Handle)
Definition HookExpr.h:287
std::uintptr_t Handle
Definition HookExpr.h:286