diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-04-10 17:38:19 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-04-10 17:38:19 +0000 |
commit | c9c58dba55fc9e46375bb67fdc9e2b55ef3805ff (patch) | |
tree | 12dbb7e740b9916582354619d3286557425a0f43 | |
parent | b4b51c9f933055e416505e54e446cc27f5f27f56 (diff) |
* Primop `__currentSystem' to return the current platform identifier.
-rw-r--r-- | src/libexpr/nixexpr.hh | 6 | ||||
-rw-r--r-- | src/libexpr/primops.cc | 17 |
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); |