* Working evaluator.

* Mutually recursive attribute sets.
* Print evaluator efficiency statistics.
This commit is contained in:
Eelco Dolstra 2003-10-31 17:09:31 +00:00
parent f1c1a3c97f
commit 9210d4d530
10 changed files with 540 additions and 309 deletions

View file

@ -4,19 +4,23 @@
#include <map>
#include "fix-expr.hh"
#include "expr.hh"
typedef map<Expr, Expr> NormalForms;
//typedef map<Path, PathSet> PkgPaths;
//typedef map<Path, Hash> PkgHashes;
typedef map<Path, PathSet> DrvPaths;
typedef map<Path, Hash> DrvHashes;
struct EvalState
{
NormalForms normalForms;
// PkgPaths pkgPaths;
// PkgHashes pkgHashes; /* normalised package hashes */
DrvPaths drvPaths;
DrvHashes drvHashes; /* normalised derivation hashes */
Expr blackHole;
unsigned int nrEvaluated;
unsigned int nrCached;
EvalState();
};
@ -27,5 +31,12 @@ Expr evalExpr(EvalState & state, Expr e);
/* Evaluate an expression read from the given file to normal form. */
Expr evalFile(EvalState & state, const Path & path);
/* Specific results. */
string evalString(EvalState & state, Expr e);
Path evalPath(EvalState & state, Expr e);
/* Print statistics. */
void printEvalStats(EvalState & state);
#endif /* !__EVAL_H */