diff options
author | Clyne Sullivan <clyne@bitgloo.com> | 2024-06-28 11:19:23 -0400 |
---|---|---|
committer | Clyne Sullivan <clyne@bitgloo.com> | 2024-06-28 11:19:23 -0400 |
commit | ea55b08698329defe9155ba89f013efc9350a861 (patch) | |
tree | 516eb74131de3b507fa7d63e6be73f16eeabe760 /var.cpp | |
parent | 08f4a92102c9739e0736965186814e856ff727a1 (diff) |
shortcut push-pops; don't env-copy functions
Diffstat (limited to 'var.cpp')
-rw-r--r-- | var.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -33,6 +33,23 @@ Var Var::lookup(const std::string& name, int skip) return {}; } +void Var::rename(const std::string& old, const std::string& neww, int skip) +{ + for (auto sc = vars.rbegin(); sc != vars.rend(); ++sc) { + if (skip > 0) { + --skip; + continue; + } + if (sc->contains(old)) { + auto it = sc->find(old); + (*sc)[neww] = it->second; + //it->second.value->setName(neww); + sc->erase(it); + break; + } + } +} + Var Var::lookupLocal(const std::string& name) { return vars.back().contains(name) ? vars.back()[name] : Var(); |