Change m_nPrecNum from int to size_t and rename to m_precedenceOpCount (#33)

This commit is contained in:
Josh Koon 2019-02-21 16:36:54 -08:00 committed by GitHub
parent 1302d51afe
commit 5a530c4bed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 21 deletions

View File

@ -65,7 +65,7 @@ CCalcEngine::CCalcEngine(bool fPrecedence, bool fIntegerMode, CalculationManager
m_nOpCode(0), m_nOpCode(0),
m_nPrevOpCode(0), m_nPrevOpCode(0),
m_openParenCount(0), m_openParenCount(0),
m_nPrecNum(0), m_precedenceOpCount(0),
m_nTempCom(0), m_nTempCom(0),
m_nLastCom(0), m_nLastCom(0),
m_parenVals{}, m_parenVals{},

View File

@ -228,19 +228,19 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
if ((nx > ni) && m_fPrecedence) if ((nx > ni) && m_fPrecedence)
{ {
if (m_nPrecNum < MAXPRECDEPTH) if (m_precedenceOpCount < MAXPRECDEPTH)
{ {
m_precedenceVals[m_nPrecNum] = m_lastVal; m_precedenceVals[m_precedenceOpCount] = m_lastVal;
m_nPrecOp[m_nPrecNum] = m_nOpCode; m_nPrecOp[m_precedenceOpCount] = m_nOpCode;
m_HistoryCollector.PushLastOpndStart(); // Eg. 1 + 2 *, Need to remember the start of 2 to do Precedence invertion if need to m_HistoryCollector.PushLastOpndStart(); // Eg. 1 + 2 *, Need to remember the start of 2 to do Precedence invertion if need to
} }
else else
{ {
m_nPrecNum = MAXPRECDEPTH - 1; m_precedenceOpCount = MAXPRECDEPTH - 1;
HandleErrorCommand(wParam); HandleErrorCommand(wParam);
} }
m_nPrecNum++; m_precedenceOpCount++;
} }
else else
{ {
@ -256,12 +256,12 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
DisplayNum(); DisplayNum();
} }
if ((m_nPrecNum != 0) && (m_nPrecOp[m_nPrecNum - 1])) if ((m_precedenceOpCount != 0) && (m_nPrecOp[m_precedenceOpCount - 1]))
{ {
m_nPrecNum--; m_precedenceOpCount--;
m_nOpCode = m_nPrecOp[m_nPrecNum]; m_nOpCode = m_nPrecOp[m_precedenceOpCount];
m_lastVal = m_precedenceVals[m_nPrecNum]; m_lastVal = m_precedenceVals[m_precedenceOpCount];
nx = NPrecedenceOfOp(m_nOpCode); nx = NPrecedenceOfOp(m_nOpCode);
// Precedence Invertion Higher to lower can happen which needs explicit enclosure of brackets // Precedence Invertion Higher to lower can happen which needs explicit enclosure of brackets
@ -385,7 +385,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
m_lastVal = Rational{}; m_lastVal = Rational{};
m_bChangeOp = false; m_bChangeOp = false;
m_nPrecNum = m_nTempCom = m_nLastCom = m_nOpCode = m_openParenCount = 0; m_precedenceOpCount = m_nTempCom = m_nLastCom = m_nOpCode = m_openParenCount = 0;
m_nPrevOpCode = 0; m_nPrevOpCode = 0;
m_bNoPrevEqu = true; m_bNoPrevEqu = true;
@ -495,11 +495,11 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
else if (!m_bError) else if (!m_bError)
DisplayNum(); DisplayNum();
if (m_nPrecNum == 0 || !m_fPrecedence) if (m_precedenceOpCount == 0 || !m_fPrecedence)
break; break;
m_nOpCode = m_nPrecOp[--m_nPrecNum]; m_nOpCode = m_nPrecOp[--m_precedenceOpCount];
m_lastVal = m_precedenceVals[m_nPrecNum]; m_lastVal = m_precedenceVals[m_precedenceOpCount];
// Precedence Invertion check // Precedence Invertion check
ni = NPrecedenceOfOp(m_nPrevOpCode); ni = NPrecedenceOfOp(m_nPrevOpCode);
@ -511,7 +511,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
m_HistoryCollector.PopLastOpndStart(); m_HistoryCollector.PopLastOpndStart();
m_bNoPrevEqu = true; m_bNoPrevEqu = true;
} while (m_nPrecNum >= 0); } while (m_precedenceOpCount >= 0);
if (!m_bError) if (!m_bError)
{ {
@ -541,7 +541,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
// paren // paren
// -OR- the the precidence holding array is full // -OR- the the precidence holding array is full
if ((m_openParenCount >= MAXPRECDEPTH && nx) || (!m_openParenCount && !nx) if ((m_openParenCount >= MAXPRECDEPTH && nx) || (!m_openParenCount && !nx)
|| ((m_nPrecNum >= MAXPRECDEPTH && m_nPrecOp[m_nPrecNum - 1] != 0))) || ((m_precedenceOpCount >= MAXPRECDEPTH && m_nPrecOp[m_precedenceOpCount - 1] != 0)))
{ {
HandleErrorCommand(wParam); HandleErrorCommand(wParam);
break; break;
@ -558,9 +558,9 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
m_nOp[m_openParenCount++] = (m_bChangeOp ? m_nOpCode : 0); m_nOp[m_openParenCount++] = (m_bChangeOp ? m_nOpCode : 0);
/* save a special marker on the precedence array */ /* save a special marker on the precedence array */
if (m_nPrecNum < m_nPrecOp.size()) if (m_precedenceOpCount < m_nPrecOp.size())
{ {
m_nPrecOp[m_nPrecNum++] = 0; m_nPrecOp[m_precedenceOpCount++] = 0;
} }
m_lastVal = Rational{}; m_lastVal = Rational{};
@ -592,7 +592,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
m_nPrevOpCode = m_nOpCode; m_nPrevOpCode = m_nOpCode;
// Now process the precedence stack till we get to an opcode which is zero. // Now process the precedence stack till we get to an opcode which is zero.
for (m_nOpCode = m_nPrecOp[--m_nPrecNum]; m_nOpCode; m_nOpCode = m_nPrecOp[--m_nPrecNum]) for (m_nOpCode = m_nPrecOp[--m_precedenceOpCount]; m_nOpCode; m_nOpCode = m_nPrecOp[--m_precedenceOpCount])
{ {
// Precedence Inversion check // Precedence Inversion check
ni = NPrecedenceOfOp(m_nPrevOpCode); ni = NPrecedenceOfOp(m_nPrevOpCode);
@ -603,7 +603,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
} }
m_HistoryCollector.PopLastOpndStart(); m_HistoryCollector.PopLastOpndStart();
m_lastVal = m_precedenceVals[m_nPrecNum]; m_lastVal = m_precedenceVals[m_precedenceOpCount];
m_currentVal = DoOperation(m_nOpCode, m_currentVal, m_lastVal); m_currentVal = DoOperation(m_nOpCode, m_currentVal, m_lastVal);
m_nPrevOpCode = m_nOpCode; m_nPrevOpCode = m_nOpCode;

View File

@ -112,7 +112,7 @@ private:
int m_openParenCount; // Number of open parentheses. int m_openParenCount; // Number of open parentheses.
std::array<int, MAXPRECDEPTH> m_nOp; /* Holding array for parenthesis operations. */ std::array<int, MAXPRECDEPTH> m_nOp; /* Holding array for parenthesis operations. */
std::array<int, MAXPRECDEPTH> m_nPrecOp; /* Holding array for precedence operations. */ std::array<int, MAXPRECDEPTH> m_nPrecOp; /* Holding array for precedence operations. */
int m_nPrecNum; /* Current number of precedence ops in holding. */ size_t m_precedenceOpCount; /* Current number of precedence ops in holding. */
int m_nLastCom; // Last command entered. int m_nLastCom; // Last command entered.
ANGLE_TYPE m_angletype; // Current Angle type when in dec mode. one of deg, rad or grad ANGLE_TYPE m_angletype; // Current Angle type when in dec mode. one of deg, rad or grad
NUM_WIDTH m_numwidth; // one of qword, dword, word or byte mode. NUM_WIDTH m_numwidth; // one of qword, dword, word or byte mode.