about summary refs log tree commit diff
path: root/src/libstore/storeexpr.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2003-11-18T11·22+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2003-11-18T11·22+0000
commitce92d1bf1434562f5b80320c503768c4d06f1f8d (patch)
tree477c80de94f3c403115f80bad450003946af2889 /src/libstore/storeexpr.hh
parent9f0f020929c9e093405cc6193d2f227cab763912 (diff)
* "Nix expression" -> "store expression".
* More refactoring.

Diffstat (limited to 'src/libstore/storeexpr.hh')
-rw-r--r--src/libstore/storeexpr.hh56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/libstore/storeexpr.hh b/src/libstore/storeexpr.hh
new file mode 100644
index 000000000000..07676c3ccedb
--- /dev/null
+++ b/src/libstore/storeexpr.hh
@@ -0,0 +1,56 @@
+#ifndef __STOREEXPR_H
+#define __STOREEXPR_H
+
+#include "aterm.hh"
+#include "store.hh"
+
+
+/* Abstract syntax of store 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; /* Store expressions, not actual inputs */
+    string platform;
+    Path builder;
+    Strings args;
+    StringPairs env;
+};
+
+struct StoreExpr
+{
+    enum { neClosure, neDerivation } type;
+    Closure closure;
+    Derivation derivation;
+};
+
+
+/* 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 store expression. */
+StoreExpr parseStoreExpr(ATerm t);
+
+/* Parse a store expression. */
+ATerm unparseStoreExpr(const StoreExpr & ne);
+
+
+#endif /* !__STOREEXPR_H */