11namespace nix::eval_cache {
16struct CachedEvalError : EvalError
31class EvalCache :
public std::enable_shared_from_this<EvalCache>
33 friend class AttrCursor;
34 friend struct CachedEvalError;
36 std::shared_ptr<AttrDb> db;
38 typedef std::function<
Value *()> RootLoader;
39 RootLoader rootLoader;
42 Value * getRootValue();
47 std::optional<std::reference_wrapper<const Hash>> useCache,
49 RootLoader rootLoader);
71typedef uint64_t AttrId;
72typedef std::pair<AttrId, Symbol> AttrKey;
73typedef std::pair<std::string, NixStringContext> string_t;
84 std::vector<std::string>
87class AttrCursor :
public std::enable_shared_from_this<AttrCursor>
89 friend class EvalCache;
90 friend struct CachedEvalError;
93 typedef std::optional<std::pair<std::shared_ptr<AttrCursor>,
Symbol>> Parent;
96 std::optional<std::pair<AttrId, AttrValue>> cachedValue;
108 std::optional<std::pair<AttrId, AttrValue>> && cachedValue = {});
110 std::vector<Symbol> getAttrPath()
const;
112 std::vector<Symbol> getAttrPath(
Symbol name)
const;
114 std::string getAttrPathStr()
const;
116 std::string getAttrPathStr(
Symbol name)
const;
120 std::shared_ptr<AttrCursor> maybeGetAttr(
Symbol name);
122 std::shared_ptr<AttrCursor> maybeGetAttr(std::string_view
name);
134 std::string getString();
136 string_t getStringWithContext();
142 std::vector<std::string> getListOfStrings();
144 std::vector<Symbol> getAttrs();
Definition suggestions.hh:52
Definition suggestions.hh:26
Definition symbol-table.hh:58
Definition eval-cache.hh:88
OrSuggestions< ref< AttrCursor > > findAlongAttrPath(const std::vector< Symbol > &attrPath)
Definition eval-cache.cc:571
StorePath forceDerivation()
Definition eval-cache.cc:770
const std::string_view & name
Definition lexer.l:1709
const T & value
Definition lexer.l:492
void forceValue(Value &v, const PosIdx pos)
bool isDerivation(Value &v)
Definition eval-cache.cc:43
void force()
Definition eval-cache.cc:17
Definition eval-cache.hh:69
Definition eval-cache.hh:70
Definition eval-cache.hh:68
Definition eval-cache.hh:67
Definition eval-cache.hh:66
std::shared_ptr< Value * > RootValue
Definition value.hh:509