BOOL CCalculator::Value(CCalcConstExpression** ppcConst) { TRISTATE tResult; CNumber cNumber; unsigned long long int ulli; tResult = mcParser.GetHexadecimal(&ulli); if (tResult == TRITRUE) { *ppcConst = NewMalloc<CCalcConstExpression>(); (*ppcConst)->SetValue(cNumber.Init((int)ulli)); return TRUE; } tResult = mcParser.GetNumber(&cNumber); if (tResult == TRITRUE) { mcParser.GetExactCharacter('L', FALSE); *ppcConst = NewMalloc<CCalcConstExpression>(); (*ppcConst)->SetValue(&cNumber); return TRUE; } return FALSE; }
BOOL PrivateAssertNumber(char* szExpected, CNumber* pcActual, int iLine, char* szFile) { CNumber* pcExpected; CChars szExpectedAsChars; CChars szActual; CChars szFake; int iIndex; short iDecimals; BOOL bResult; szFake.Fake(szExpected); iIndex = szFake.Find(0, '.'); if (iIndex != -1) { iDecimals = (short)(szFake.Length() - iIndex); } else { iDecimals = 0; } pcExpected = gcNumberControl.Add(pcActual->mcMaxWholeNumbers, iDecimals); pcExpected->Init(szExpected, pcActual->mcMaxWholeNumbers, iDecimals); if (!pcExpected->Equals(pcActual)) { pcExpected->ToString(&szExpectedAsChars); pcActual->ToString(&szActual); bResult = Fail(szExpectedAsChars.Text(), szActual.Text(), iLine, szFile); szExpectedAsChars.Kill(); szActual.Kill(); } else { bResult = Pass(); } gcNumberControl.Remove(); return bResult; }