[C++] Implement foreach
diff --git a/var.h b/var.h
index e1b9d11..1d35c8f 100644
--- a/var.h
+++ b/var.h
@@ -47,7 +47,7 @@
 
   virtual void AppendVar(Evaluator* ev, Value* v);
 
-  string DebugString() const override;
+  virtual string DebugString() const override;
 
  private:
   shared_ptr<string> v_;
@@ -69,7 +69,7 @@
 
   virtual void AppendVar(Evaluator* ev, Value* v);
 
-  string DebugString() const override;
+  virtual string DebugString() const override;
 
  private:
   Value* v_;
@@ -90,7 +90,7 @@
 
   virtual void Eval(Evaluator* ev, string* s) const override;
 
-  string DebugString() const override;
+  virtual string DebugString() const override;
 };
 
 extern UndefinedVar* kUndefined;
@@ -104,4 +104,16 @@
   void Assign(StringPiece name, Var* v);
 };
 
+class ScopedVar {
+ public:
+  // Does not take ownerships of arguments.
+  ScopedVar(Vars* vars, StringPiece name, Var* var);
+  ~ScopedVar();
+
+ private:
+  Vars* vars_;
+  Var* orig_;
+  Vars::iterator iter_;
+};
+
 #endif  // VAR_H_