Clean up EvaluationScope class

This commit is contained in:
Deukhoofd 2019-05-29 15:12:13 +02:00
parent bda561b775
commit 257eb942c7
No known key found for this signature in database
GPG Key ID: B4C087AC81641654
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];
}

View File

@ -10,34 +10,12 @@ class EvaluationScope {
unordered_map<int, EvalValue*>* _scriptScope;
vector<unordered_map<int, EvalValue*>> _localScope;
public:
explicit EvaluationScope(unordered_map<int, EvalValue*>* scriptVariables, int deepestScope){
_scriptScope = scriptVariables;
_localScope = vector<unordered_map<int, EvalValue*>>(deepestScope);
}
explicit EvaluationScope(unordered_map<int, EvalValue*>* scriptVariables, int deepestScope);
~EvaluationScope();
~EvaluationScope(){
_localScope.clear();
}
void CreateVariable(int scope, int id, EvalValue* value){
if (scope == 0){
_scriptScope->insert_or_assign(id, value);
} else{
_localScope[scope - 1].insert({id, value});
}
}
void SetVariable(int scope, int id, EvalValue* value){
if (scope == 0){
_scriptScope->insert_or_assign(id, value);
} else{
_localScope[scope - 1][id] = value;
}
}
EvalValue* GetVariable(int scope, int id){
return _localScope[scope - 1][id];
}
void CreateVariable(int scope, int id, EvalValue* value);
void SetVariable(int scope, int id, EvalValue* value);
EvalValue* GetVariable(int scope, int id);
};