diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-15 19:53:36 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-18 11:25:42 +0900 |
commit | 4c469b36fb8cf2240f8b9f41448dc6f9e1d3df55 (patch) | |
tree | 7544348c6b8fa20b8c0600bae28225f18b14b629 /var.cc | |
parent | 776ca3085c44e6570813270df75278849c37d400 (diff) | |
download | kati-4c469b36fb8cf2240f8b9f41448dc6f9e1d3df55.tar.gz |
[C++] Implementing +=
Diffstat (limited to 'var.cc')
-rw-r--r-- | var.cc | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -1,5 +1,6 @@ #include "var.h" +#include "log.h" #include "value.h" UndefinedVar kUndefinedBuf; @@ -11,6 +12,10 @@ Var::Var() { Var::~Var() { } +void Var::AppendVar(Evaluator*, Value*) { + CHECK(false); +} + SimpleVar::SimpleVar(shared_ptr<string> v, const char* origin) : v_(v), origin_(origin) { } @@ -19,6 +24,13 @@ void SimpleVar::Eval(Evaluator*, string* s) const { *s += *v_; } +void SimpleVar::AppendVar(Evaluator* ev, Value* v) { + shared_ptr<string> s = make_shared<string>(*v_); + s->push_back(' '); + v->Eval(ev, s.get()); + v_ = s; +} + string SimpleVar::DebugString() const { return *v_; } @@ -31,6 +43,10 @@ void RecursiveVar::Eval(Evaluator* ev, string* s) const { v_->Eval(ev, s); } +void RecursiveVar::AppendVar(Evaluator*, Value* v) { + v_ = NewExpr3(v_, NewLiteral(" "), v); +} + string RecursiveVar::DebugString() const { return v_->DebugString(); } |