void AccumulateDigits(bool isInput, string msg) { if (isInput) { currentState = CalcState.AccumulateDigits; tempNumber += msg; resultDelegate(tempNumber); } else { if (Rules.IsDigit(msg)) { AccumulateDigits(true, msg); } else if (Rules.IsOperator(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg) || Rules.IsXPowerY(msg) || Rules.IsFactorial(msg) || Rules.IsBin(msg) || Rules.IsReBin(msg) || Rules.IsPrime(msg)) { Compute(true, msg); } else if (Rules.IsEqualSign(msg) && operation.Length > 0) { Result(true, msg); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(true, msg); } else if (Rules.IsClearSign(msg)) { Zero(true, msg); } else if (Rules.IsOff(msg)) { Off(true, msg); } else if (Rules.IsDivisibleSign(msg)) { Error(true, msg); } else if (Rules.IsPrime(msg)) { Compute(true, msg); } } }
void Compute(bool isInput, string msg) { if (isInput) { currentState = CalcState.Compute; if (operation.Length > 0 && (Rules.IsRootSign(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg) || Rules.IsFactorial(msg) || Rules.IsBin(msg) || Rules.IsReBin(msg))) { operation2 = msg; Calculate(); operation2 = ""; } else if (Rules.IsRootSign(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg) || Rules.IsFactorial(msg) || Rules.IsBin(msg) || Rules.IsReBin(msg)) { operation = msg; if (operation.Length > 0) { Calculate(); resultDelegate(resultNumber); } tempNumber = resultNumber; operation = ""; } else if ((Rules.IsPercentSign(msg) || Rules.IsXPowerY(msg)) && operation.Length > 0) { operation2 = msg; if (tempNumber2.Length == 0) { tempNumber2 = tempNumber; tempNumber = ""; } else if (tempNumber.Length > 0 && tempNumber2.Length > 0) { Calculate(); resultDelegate(tempNumber); } } else { if (operation.Length > 0) { Calculate(); resultDelegate(resultNumber); } else { resultNumber = tempNumber; } operation = msg; tempNumber = ""; } } else { if (Rules.IsDigit(msg)) { AccumulateDigits(true, msg); } else if (Rules.IsClearSign(msg)) { Zero(true, msg); } else if (Rules.IsOff(msg)) { Off(true, msg); } else if (Rules.IsOperator(msg) || Rules.IsXPowerY(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg) || Rules.IsFactorial(msg) || Rules.IsBin(msg) || Rules.IsReBin(msg) || Rules.IsPrime(msg)) { Compute(true, msg); } else if (Rules.IsDivisibleSign(msg)) { Error(true, msg); } else if (Rules.IsEqualSign(msg)) { Result(true, msg); } } }