diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueStorage.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueStorage.cs index 7090818..609ec12 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueStorage.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueStorage.cs @@ -5,33 +5,40 @@ namespace Advanced_Software_Engineering.Verbs.Value { public class ValueStorage { protected int currentStack; - protected Dictionary> Variables = new Dictionary>(); + protected List> Variables = new List>(); public ValueStorage() { Reset(); } public void Reset() { - Variables = new Dictionary>(); - SetStack(0); + Variables = new List>(); + Variables.Add(new Dictionary()); + currentStack = 0; } private void SetStack(int stack) { if (stack < 0) throw new Exception("Stack cannot be less than 0"); - if (!Variables.ContainsKey(stack)) Variables.Add(currentStack, new Dictionary()); + //Decreased Stack + if(currentStack > stack) { + Variables.RemoveAt(currentStack); + } + //Increased Stack + else if (currentStack < stack) { + Variables.Add(new Dictionary()); + } + + currentStack = stack; } public void IncreaseStack() { - currentStack++; - SetStack(currentStack); + SetStack(currentStack + 1); } public void DecreaseStack() { if (currentStack > 0) { - Variables.Remove(currentStack); - currentStack--; - SetStack(currentStack); + SetStack(currentStack - 1); } }