10namespace nix::eval_cache {
15typedef std::function<Value *(EvalState &)> RootLoader;
29 std::map<Hash, ref<EvalCache>> caches;
32 using Evaluator::Evaluator;
37class EvalCache :
public std::enable_shared_from_this<EvalCache>
39 friend class AttrCursor;
41 std::shared_ptr<AttrDb> db;
42 RootLoader rootLoader;
50 std::optional<std::reference_wrapper<const Hash>> useCache,
51 RootLoader rootLoader);
74typedef uint64_t AttrId;
75typedef std::pair<AttrId, std::string> AttrKey;
76typedef std::pair<std::string, NixStringContext> string_t;
87 std::vector<std::string>
90class AttrCursor :
public std::enable_shared_from_this<AttrCursor>
92 friend class EvalCache;
95 typedef std::optional<std::pair<std::shared_ptr<AttrCursor>, std::string>> Parent;
98 std::optional<std::pair<AttrId, AttrValue>> cachedValue;
109 Value * value =
nullptr,
110 std::optional<std::pair<AttrId, AttrValue>> && cachedValue = {});
112 std::vector<std::string> getAttrPath(
EvalState & state)
const;
114 std::vector<std::string> getAttrPath(
EvalState & state, std::string_view name)
const;
116 std::string getAttrPathStr(
EvalState & state)
const;
118 std::string getAttrPathStr(
EvalState & state, std::string_view name)
const;
122 std::shared_ptr<AttrCursor> maybeGetAttr(
EvalState & state,
const std::string & name);
132 std::string getString(
EvalState & state);
134 string_t getStringWithContext(
EvalState & state);
140 std::vector<std::string> getListOfStrings(
EvalState & state);
142 std::vector<std::string> getAttrs(
EvalState & state);
Definition suggestions.hh:55
Definition suggestions.hh:29
Definition eval-cache.hh:91
OrSuggestions< ref< AttrCursor > > findAlongAttrPath(EvalState &state, const std::vector< std::string > &attrPath)
Definition eval-cache.cc:532
StorePath forceDerivation(EvalState &state)
Definition eval-cache.cc:729
Definition eval-cache.hh:25
Definition eval-cache.cc:22
Definition eval-cache.hh:72
Definition eval-cache.hh:69
Definition eval-cache.hh:73
Definition eval-cache.hh:71
Definition eval-cache.hh:70
Definition eval-cache.hh:68
std::shared_ptr< Value * > RootValue
Definition value.hh:848