diff options
Diffstat (limited to 'var.h')
-rw-r--r-- | var.h | 33 |
1 files changed, 19 insertions, 14 deletions
@@ -62,23 +62,26 @@ class Var : public Evaluable { class SimpleVar : public Var { public: + explicit SimpleVar(VarOrigin origin); SimpleVar(const string& v, VarOrigin origin); - virtual const char* Flavor() const { + virtual const char* Flavor() const override { return "simple"; } - virtual VarOrigin Origin() const { + virtual VarOrigin Origin() const override { return origin_; } virtual void Eval(Evaluator* ev, string* s) const override; - virtual void AppendVar(Evaluator* ev, Value* v); + virtual void AppendVar(Evaluator* ev, Value* v) override; virtual StringPiece String() const override; virtual string DebugString() const override; + string* mutable_value() { return &v_; } + private: string v_; VarOrigin origin_; @@ -88,16 +91,16 @@ class RecursiveVar : public Var { public: RecursiveVar(Value* v, VarOrigin origin, StringPiece orig); - virtual const char* Flavor() const { + virtual const char* Flavor() const override { return "recursive"; } - virtual VarOrigin Origin() const { + virtual VarOrigin Origin() const override { return origin_; } virtual void Eval(Evaluator* ev, string* s) const override; - virtual void AppendVar(Evaluator* ev, Value* v); + virtual void AppendVar(Evaluator* ev, Value* v) override; virtual StringPiece String() const override; @@ -113,13 +116,13 @@ class UndefinedVar : public Var { public: UndefinedVar(); - virtual const char* Flavor() const { + virtual const char* Flavor() const override { return "undefined"; } - virtual VarOrigin Origin() const { + virtual VarOrigin Origin() const override { return VarOrigin::UNDEFINED; } - virtual bool IsDefined() const { return false; } + virtual bool IsDefined() const override { return false; } virtual void Eval(Evaluator* ev, string* s) const override; @@ -138,19 +141,19 @@ class RuleVar : public Var { delete v_; } - virtual const char* Flavor() const { + virtual const char* Flavor() const override { return v_->Flavor(); } - virtual VarOrigin Origin() const { + virtual VarOrigin Origin() const override { return v_->Origin(); } - virtual bool IsDefined() const { + virtual bool IsDefined() const override { return v_->IsDefined(); } - virtual void Eval(Evaluator* ev, string* s) const { + virtual void Eval(Evaluator* ev, string* s) const override { v_->Eval(ev, s); } - virtual void AppendVar(Evaluator* ev, Value* v) { + virtual void AppendVar(Evaluator* ev, Value* v) override { v_->AppendVar(ev, v); } virtual StringPiece String() const override { @@ -176,6 +179,8 @@ class Vars : public unordered_map<Symbol, Var*> { void Assign(Symbol name, Var* v); + static void add_used_env_vars(Symbol v); + static const unordered_set<Symbol>& used_env_vars() { return used_env_vars_; } |