aboutsummaryrefslogtreecommitdiffstats
path: root/var.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'var.cpp')
-rw-r--r--var.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/var.cpp b/var.cpp
index c907d7a..f4d64fd 100644
--- a/var.cpp
+++ b/var.cpp
@@ -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();