11namespace nix::eval_cache {
16typedef std::function<Value *(EvalState &)> RootLoader;
30 std::map<Hash, ref<EvalCache>> caches;
33 using Evaluator::Evaluator;
38class EvalCache :
public std::enable_shared_from_this<EvalCache>
42 std::shared_ptr<AttrDb> db;
43 RootLoader rootLoader;
51 std::optional<std::reference_wrapper<const Hash>> useCache,
52 RootLoader rootLoader);
75typedef uint64_t AttrId;
76typedef std::pair<AttrId, std::string> AttrKey;
77typedef std::pair<std::string, NixStringContext> string_t;
88 std::vector<std::string>
91class AttrCursor :
public std::enable_shared_from_this<AttrCursor>
96 typedef std::optional<std::pair<std::shared_ptr<AttrCursor>, std::string>> Parent;
99 std::optional<std::pair<AttrId, AttrValue>> cachedValue;
110 Value * value =
nullptr,
111 std::optional<std::pair<AttrId, AttrValue>> && cachedValue = {});
113 std::vector<std::string> getAttrPath(
EvalState & state)
const;
115 std::vector<std::string> getAttrPath(
EvalState & state, std::string_view name)
const;
117 std::string getAttrPathStr(
EvalState & state)
const;
119 std::string getAttrPathStr(
EvalState & state, std::string_view name)
const;
123 std::shared_ptr<AttrCursor> maybeGetAttr(
EvalState & state,
const std::string & name);
133 std::string getString(
EvalState & state);
135 string_t getStringWithContext(
EvalState & state);
141 std::vector<std::string> getListOfStrings(
EvalState & state);
143 std::vector<std::string> getAttrs(
EvalState & state);
Definition suggestions.hh:55
Definition suggestions.hh:29
Definition eval-cache.hh:92
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:26
Definition eval-cache.hh:39
Definition eval-cache.hh:73
Definition eval-cache.hh:70
Definition eval-cache.hh:74
Definition eval-cache.hh:72
Definition eval-cache.hh:71
Definition eval-cache.hh:69
std::shared_ptr< Value * > RootValue
Definition value.hh:851