nixd
Loading...
Searching...
No Matches
HackCache.h
Go to the documentation of this file.
1/// Access EvalCache in \p nix::EvalState
2
3#pragma once
4
5#include <nix/eval.hh>
6
7namespace nixt {
8
9#if HAVE_BOEHMGC
10using FileEvalCache =
11 std::map<nix::SourcePath, nix::Value, std::less<nix::SourcePath>,
12 traceable_allocator<std::pair<const nix::SourcePath, nix::Value>>>;
13#else
14using FileEvalCache = std::map<nix::SourcePath, nix::Expr *>;
15#endif
16
17namespace detail {
18
19template <typename Tag> struct R {
20 using type = typename Tag::type;
21 static type P;
22};
23
24template <typename Tag> typename R<Tag>::type R<Tag>::P;
25
26template <typename Tag, typename Tag::type p> struct RB : R<Tag> {
27 struct F {
28 F() { R<Tag>::P = p; }
29 };
30 static F FO;
31};
32
33template <typename Tag, typename Tag::type p>
35
36// Impl
37
38struct EvalCacheF {
39 using type = FileEvalCache nix::EvalState::*;
40};
41
43
44} // namespace detail
45
46inline FileEvalCache &getFileEvalCache(nix::EvalState &S) {
48}
49
50} // namespace nixt
Access EvalCache in nix::EvalState.
Definition ArrayRef.h:7
std::map< nix::SourcePath, nix::Expr * > FileEvalCache
Definition HackCache.h:14
FileEvalCache & getFileEvalCache(nix::EvalState &S)
Definition HackCache.h:46
FileEvalCache nix::EvalState::* type
Definition HackCache.h:39
typename Tag::type type
Definition HackCache.h:20
static type P
Definition HackCache.h:21