diff options
author | Qyriad <qyriad@qyriad.me> | 2024-07-16 12:18:39 -0600 |
---|---|---|
committer | Qyriad <qyriad@qyriad.me> | 2024-08-08 22:01:12 -0600 |
commit | 0787dcf5f6550ab4ee87c54627b565252ebed1c7 (patch) | |
tree | 2c4ea051cb9276bb24886115b8f9a5b53171840b /src/libexpr/eval.cc | |
parent | 3b902683e93ad21be3537ef77f3e5200fbbed900 (diff) |
libexpr: move Value implementations out of eval.cc
Change-Id: I2ce8a9713533888b3d109a56947156eb3a5ab492
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r-- | src/libexpr/eval.cc | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 4885db68d..702b9b6ac 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -70,11 +70,6 @@ std::string printValue(EvalState & state, Value & v) return out.str(); } -void Value::print(EvalState & state, std::ostream & str, PrintOptions options) -{ - printValue(state, str, *this, options); -} - const Value * getPrimOp(const Value &v) { const Value * primOp = &v; while (primOp->isPrimOpApp()) { @@ -124,32 +119,6 @@ std::string showType(const Value & v) #pragma GCC diagnostic pop } -PosIdx Value::determinePos(const PosIdx pos) const -{ - // Allow selecting a subset of enum values - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wswitch-enum" - switch (internalType) { - case tAttrs: return attrs->pos; - case tLambda: return lambda.fun->pos; - case tApp: return app.left->determinePos(pos); - default: return pos; - } - #pragma GCC diagnostic pop -} - -bool Value::isTrivial() const -{ - return - internalType != tApp - && internalType != tPrimOpApp - && (internalType != tThunk - || (dynamic_cast<ExprAttrs *>(thunk.expr) - && (static_cast<ExprAttrs *>(thunk.expr))->dynamicAttrs.empty()) - || dynamic_cast<ExprLambda *>(thunk.expr) - || dynamic_cast<ExprList *>(thunk.expr)); -} - #if HAVE_BOEHMGC /* Called when the Boehm GC runs out of memory. */ @@ -498,36 +467,6 @@ std::ostream & operator<<(std::ostream & output, PrimOp & primOp) return output; } - -Value::Value(primop_t, PrimOp & primop) - : internalType(tPrimOp) - , primOp(&primop) - , _primop_pad(0) -{ - primop.check(); -} - -PrimOp * Value::primOpAppPrimOp() const -{ - Value * left = primOpApp.left; - while (left && !left->isPrimOp()) { - left = left->primOpApp.left; - } - - if (!left) - return nullptr; - return left->primOp; -} - -void Value::mkPrimOp(PrimOp * p) -{ - p->check(); - clearValue(); - internalType = tPrimOp; - primOp = p; -} - - Value * EvalState::addPrimOp(PrimOp && primOp) { /* Hack to make constants lazy: turn them into a application of @@ -779,42 +718,6 @@ DebugTraceStacker::DebugTraceStacker(EvalState & evalState, DebugTrace t) evalState.runDebugRepl(nullptr, trace.env, trace.expr); } -void Value::mkString(std::string_view s) -{ - mkString(gcCopyStringIfNeeded(s)); -} - - -static void copyContextToValue(Value & v, const NixStringContext & context) -{ - if (!context.empty()) { - size_t n = 0; - v.string.context = gcAllocType<char const *>(context.size() + 1); - for (auto & i : context) - v.string.context[n++] = gcCopyStringIfNeeded(i.to_string()); - v.string.context[n] = 0; - } -} - -void Value::mkString(std::string_view s, const NixStringContext & context) -{ - mkString(s); - copyContextToValue(*this, context); -} - -void Value::mkStringMove(const char * s, const NixStringContext & context) -{ - mkString(s); - copyContextToValue(*this, context); -} - - -void Value::mkPath(const SourcePath & path) -{ - mkPath(gcCopyStringIfNeeded(path.path.abs())); -} - - inline Value * EvalState::lookupVar(Env * env, const ExprVar & var, bool noEval) { for (auto l = var.level; l; --l, env = env->up) ; |