diff options
Diffstat (limited to 'src/state.cc')
-rw-r--r-- | src/state.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/state.cc b/src/state.cc index 4c7168b..0697e48 100644 --- a/src/state.cc +++ b/src/state.cc @@ -22,10 +22,12 @@ #include "metrics.h" #include "util.h" +const Pool State::kDefaultPool("", 0); const Rule State::kPhonyRule("phony"); State::State() { AddRule(&kPhonyRule); + AddPool(&kDefaultPool); } void State::AddRule(const Rule* rule) { @@ -40,7 +42,20 @@ const Rule* State::LookupRule(const string& rule_name) { return i->second; } -Edge* State::AddEdge(const Rule* rule) { +void State::AddPool(const Pool* pool) { + assert(LookupPool(pool->name()) == NULL); + pools_[pool->name()] = pool; +} + +const Pool* State::LookupPool(const string& pool_name) { + map<string, const Pool*>::iterator i = pools_.find(pool_name); + if (i == pools_.end()) + return NULL; + return i->second; +} + +Edge* State::AddEdge(const Rule* rule, const Pool* pool) { + // FIXME(iannucci): do something with pool Edge* edge = new Edge(); edge->rule_ = rule; edge->env_ = &bindings_; |