Clean up EvaluationScope class

This commit is contained in:
2019-05-29 15:12:13 +02:00
parent bda561b775
commit 257eb942c7
2 changed files with 34 additions and 27 deletions

View File

@@ -1,2 +1,31 @@
#include "EvaluationScope.hpp"
EvaluationScope::EvaluationScope(unordered_map<int, EvalValue *> *scriptVariables, int deepestScope) {
_scriptScope = scriptVariables;
_localScope = vector<unordered_map<int, EvalValue*>>(deepestScope);
}
EvaluationScope::~EvaluationScope() {
_localScope.clear();
}
void EvaluationScope::CreateVariable(int scope, int id, EvalValue *value) {
if (scope == 0){
_scriptScope->insert_or_assign(id, value);
} else{
_localScope[scope - 1].insert({id, value});
}
}
void EvaluationScope::SetVariable(int scope, int id, EvalValue *value) {
if (scope == 0){
_scriptScope->insert_or_assign(id, value);
} else{
_localScope[scope - 1][id] = value;
}
}
EvalValue *EvaluationScope::GetVariable(int scope, int id) {
return _localScope[scope - 1][id];
}