public static OperStruct OperSet(Action <int> _operFunc, int _operValue) { OperStruct operStru = new OperStruct(); operStru.OperFunc = _operFunc; operStru.OperValue = _operValue; return(operStru); }
public void Undo() { OperStruct operFunc = stack.Pop(); if (operFunc.OperFunc != null && _reverseOper.ContainsKey(operFunc.OperFunc)) { _reverseOper[operFunc.OperFunc](operFunc.OperValue); _undo = true; } }
public void RepeatLastCommand() { OperStruct topOfStack = stack.Peek(); if (stack.Count > 1) { if (topOfStack.OperFunc != null) { if (!_undo) // if not called undo { _reverseOper[topOfStack.OperFunc](topOfStack.OperValue); } else // called undo { stack.Pop(); topOfStack = stack.Pop(); _reverseOper[topOfStack.OperFunc](topOfStack.OperValue); _undo = true; } } } }
public void Division(int value) { _total /= value; _undo = false; stack.Push(OperStruct.OperSet(Division, value)); }
public void Multiply(int value) { _total *= value; _undo = false; stack.Push(OperStruct.OperSet(Multiply, value)); }
public void Subtract(int value) { _total -= value; _undo = false; stack.Push(OperStruct.OperSet(Subtract, value)); }
public void Add(int value) { _total += value; _undo = false; stack.Push(OperStruct.OperSet(Add, value)); }