aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/value.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexpr/value.hh')
-rw-r--r--src/libexpr/value.hh17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/libexpr/value.hh b/src/libexpr/value.hh
index f90082e61..b7b9ed94a 100644
--- a/src/libexpr/value.hh
+++ b/src/libexpr/value.hh
@@ -8,6 +8,7 @@
#include "value/context.hh"
#include "input-accessor.hh"
#include "source-path.hh"
+#include "print-options.hh"
#if HAVE_BOEHMGC
#include <gc/gc_allocator.h>
@@ -70,7 +71,7 @@ class StorePath;
class Store;
class EvalState;
class XMLWriter;
-
+class Printer;
typedef int64_t NixInt;
typedef double NixFloat;
@@ -82,6 +83,7 @@ typedef double NixFloat;
class ExternalValueBase
{
friend std::ostream & operator << (std::ostream & str, const ExternalValueBase & v);
+ friend class Printer;
protected:
/**
* Print out the value
@@ -139,11 +141,9 @@ private:
friend std::string showType(const Value & v);
- void print(const SymbolTable &symbols, std::ostream &str, std::set<const void *> *seen, int depth) const;
-
public:
- void print(const SymbolTable &symbols, std::ostream &str, bool showRepeated = false, int depth = INT_MAX) const;
+ void print(EvalState &state, std::ostream &str, PrintOptions options = PrintOptions {});
// Functions needed to distinguish the type
// These should be removed eventually, by putting the functionality that's
@@ -351,10 +351,15 @@ public:
inline void mkPrimOpApp(Value * l, Value * r)
{
internalType = tPrimOpApp;
- app.left = l;
- app.right = r;
+ primOpApp.left = l;
+ primOpApp.right = r;
}
+ /**
+ * For a `tPrimOpApp` value, get the original `PrimOp` value.
+ */
+ PrimOp * primOpAppPrimOp() const;
+
inline void mkExternal(ExternalValueBase * e)
{
clearValue();