aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-04-10 17:38:19 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-04-10 17:38:19 +0000
commitc9c58dba55fc9e46375bb67fdc9e2b55ef3805ff (patch)
tree12dbb7e740b9916582354619d3286557425a0f43 /src
parentb4b51c9f933055e416505e54e446cc27f5f27f56 (diff)
* Primop `__currentSystem' to return the current platform identifier.
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/nixexpr.hh6
-rw-r--r--src/libexpr/primops.cc17
2 files changed, 14 insertions, 9 deletions
diff --git a/src/libexpr/nixexpr.hh b/src/libexpr/nixexpr.hh
index 9c49751c7..b7decaa3d 100644
--- a/src/libexpr/nixexpr.hh
+++ b/src/libexpr/nixexpr.hh
@@ -89,11 +89,5 @@ void checkVarDefs(const ATermMap & def, Expr e);
/* Create an expression representing a boolean. */
Expr makeBool(bool b);
-/* Create an expression representing a string. */
-Expr makeString(const string & s);
-
-/* Create an expression representing a path. */
-Expr makePath(const Path & path);
-
#endif /* !__NIXEXPR_H */
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 4f0a9f1bd..dbb8f51b0 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -357,21 +357,21 @@ static Expr primFalse(EvalState & state, const ATermVector & args)
/* Return the null value. */
-Expr primNull(EvalState & state, const ATermVector & args)
+static Expr primNull(EvalState & state, const ATermVector & args)
{
return makeNull();
}
/* Determine whether the argument is the null value. */
-Expr primIsNull(EvalState & state, const ATermVector & args)
+static Expr primIsNull(EvalState & state, const ATermVector & args)
{
return makeBool(matchNull(evalExpr(state, args[0])));
}
/* Apply a function to every element of a list. */
-Expr primMap(EvalState & state, const ATermVector & args)
+static Expr primMap(EvalState & state, const ATermVector & args)
{
Expr fun = evalExpr(state, args[0]);
Expr list = evalExpr(state, args[1]);
@@ -388,11 +388,22 @@ Expr primMap(EvalState & state, const ATermVector & args)
}
+/* Return a string constant representing the current platform. Note!
+ that differs between platforms, so Nix expressions using
+ `__currentSystem' can evaluate to different values on different
+ platforms. */
+static Expr primCurrentSystem(EvalState & state, const ATermVector & args)
+{
+ return makeStr(toATerm(thisSystem));
+}
+
+
void EvalState::addPrimOps()
{
addPrimOp("true", 0, primTrue);
addPrimOp("false", 0, primFalse);
addPrimOp("null", 0, primNull);
+ addPrimOp("__currentSystem", 0, primCurrentSystem);
addPrimOp("import", 1, primImport);
addPrimOp("derivation", 1, primDerivation);