diff options
Diffstat (limited to 'var.cpp')
-rw-r--r-- | var.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
@@ -17,15 +17,11 @@ */ #include "var.hpp" -#include <list> -#include <map> -#include <string> - -static std::list<std::map<std::string, Var>> llvmVars; +std::list<std::map<std::string, Var>> Var::vars; Var Var::lookup(const std::string& name, int skip) { - for (auto sc = llvmVars.rbegin(); sc != llvmVars.rend(); ++sc) { + for (auto sc = vars.rbegin(); sc != vars.rend(); ++sc) { if (skip > 0) { --skip; continue; @@ -37,23 +33,28 @@ Var Var::lookup(const std::string& name, int skip) return {}; } +Var Var::lookupLocal(const std::string& name) +{ + return vars.back().contains(name) ? vars.back()[name] : Var(); +} + void Var::pushScope() { - llvmVars.emplace_back(); + vars.emplace_back(); } void Var::popScope() { - llvmVars.pop_back(); + vars.pop_back(); } Var& Var::addGlobal(const std::string& name, Var var) { - return llvmVars.front().emplace(name, var).first->second; + return vars.front().emplace(name, var).first->second; } Var& Var::addLocal(const std::string& name, Var var) { - return llvmVars.back().emplace(name, var).first->second; + return vars.back().emplace(name, var).first->second; } |