diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-10-20T09·20+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-10-20T09·20+0000 |
commit | 53e376d836133a660223198c7bb8308fb912375e (patch) | |
tree | 92d5e5381b9bfafd2a79d3efdec71f14edb798d9 /src/libnix/expr.hh | |
parent | 0eab306466fdb186c692521dd1f2b949e56c54da (diff) |
* Refactored the source tree.
Diffstat (limited to 'src/libnix/expr.hh')
-rw-r--r-- | src/libnix/expr.hh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/libnix/expr.hh b/src/libnix/expr.hh new file mode 100644 index 000000000000..7d0420935f9d --- /dev/null +++ b/src/libnix/expr.hh @@ -0,0 +1,66 @@ +#ifndef __FSTATE_H +#define __FSTATE_H + +extern "C" { +#include <aterm2.h> +} + +#include "store.hh" + + +/* Abstract syntax of Nix expressions. */ + +struct ClosureElem +{ + PathSet refs; +}; + +typedef map<Path, ClosureElem> ClosureElems; + +struct Closure +{ + PathSet roots; + ClosureElems elems; +}; + +typedef map<string, string> StringPairs; + +struct Derivation +{ + PathSet outputs; + PathSet inputs; /* Nix expressions, not actual inputs */ + string platform; + Path builder; + Strings args; + StringPairs env; +}; + +struct NixExpr +{ + enum { neClosure, neDerivation } type; + Closure closure; + Derivation derivation; +}; + + +/* Return a canonical textual representation of an expression. */ +string printTerm(ATerm t); + +/* Throw an exception with an error message containing the given + aterm. */ +Error badTerm(const format & f, ATerm t); + +/* Hash an aterm. */ +Hash hashTerm(ATerm t); + +/* Write an aterm to the Nix store directory, and return its path. */ +Path writeTerm(ATerm t, const string & suffix); + +/* Parse a Nix expression. */ +NixExpr parseNixExpr(ATerm t); + +/* Parse a Nix expression. */ +ATerm unparseNixExpr(const NixExpr & ne); + + +#endif /* !__FSTATE_H */ |