about summary refs log tree commit diff
path: root/src/libexpr/eval.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2010-03-31T15·38+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2010-03-31T15·38+0000
commit3d94be61ea562dea2098b6570f711386179913ef (patch)
tree9afd60cf782d5824efc4bafba98af1ee6af937f4 /src/libexpr/eval.hh
parent51876789131e81dca9807c00773158160c3824c2 (diff)
* Implemented derivations.
Diffstat (limited to 'src/libexpr/eval.hh')
-rw-r--r--src/libexpr/eval.hh9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh
index 198d936b97..eba97dd737 100644
--- a/src/libexpr/eval.hh
+++ b/src/libexpr/eval.hh
@@ -109,7 +109,6 @@ void mkString(Value & v, const string & s, const PathSet & context = PathSet());
 void mkPath(Value & v, const char * s);
 
 
-typedef std::map<Path, PathSet> DrvRoots;
 typedef std::map<Path, Hash> DrvHashes;
 
 /* Cache for calls to addToStore(); maps source paths to the store
@@ -124,8 +123,10 @@ std::ostream & operator << (std::ostream & str, Value & v);
 
 class EvalState 
 {
-    DrvRoots drvRoots;
+public:
     DrvHashes drvHashes; /* normalised derivation hashes */
+
+private:
     SrcToStore srcToStore; 
 
     unsigned long nrValues;
@@ -164,9 +165,11 @@ public:
 
     /* Force `v', and then verify that it has the expected type. */
     int forceInt(Value & v);
+    bool forceBool(Value & v);
     void forceAttrs(Value & v);
     void forceList(Value & v);
     void forceFunction(Value & v); // either lambda or primop
+    string forceString(Value & v);
     string forceStringNoCtx(Value & v);
 
     /* String coercion.  Converts strings, paths and derivations to a
@@ -209,6 +212,8 @@ public:
     void mkList(Value & v, unsigned int length);
     void mkAttrs(Value & v);
 
+    void cloneAttrs(Value & src, Value & dst);
+
     /* Print statistics. */
     void printStats();
 };