diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2004-02-04T16·03+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2004-02-04T16·03+0000 |
commit | 9b44480612dd30a7292ec94a88e4018b8f18e3f0 (patch) | |
tree | 0c83114806a4f7724a5dd8dcb0694103e70acb71 /src/libexpr/eval.hh | |
parent | c4f7ae4aa5fc7071cfa853ec5d75aaf00e7a97fc (diff) |
* Use a map to lookup primops.
* Various performance improvements in the evaluator. * Do not link against unused (and missing!) libraries (-lsglr, etc.).
Diffstat (limited to 'src/libexpr/eval.hh')
-rw-r--r-- | src/libexpr/eval.hh | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh index 0bc052676deb..34ac467f1d80 100644 --- a/src/libexpr/eval.hh +++ b/src/libexpr/eval.hh @@ -11,9 +11,17 @@ typedef map<Path, PathSet> DrvPaths; typedef map<Path, Hash> DrvHashes; +struct EvalState; +typedef Expr (* PrimOp0) (EvalState &); +typedef Expr (* PrimOp1) (EvalState &, Expr arg); + + struct EvalState { ATermMap normalForms; + ATermMap primOps0; /* nullary primops */ + ATermMap primOps1; /* unary primops */ + ATermMap primOpsAll; DrvPaths drvPaths; DrvHashes drvHashes; /* normalised derivation hashes */ Expr blackHole; @@ -22,6 +30,9 @@ struct EvalState unsigned int nrCached; EvalState(); + + void addPrimOp0(const string & name, PrimOp0 primOp); + void addPrimOp1(const string & name, PrimOp1 primOp); }; |