Example #1
0
 private static bool ProcessTerminalState(ref NumberSpanRawInfo raw, NumberSpanStandardStyles style, ref NumberSpanResult result)
 {
     if (raw._lastSeenTTT == TTT.Num)
     {
         var tok = new NumberSpanToken
         {
             _ttt = TTT.Sep,
             _sep = string.Empty
         };
         if (!raw.ProcessToken(ref tok, ref result))
         {
             result.SetFailure(ParseFailureKind.Format, "Format_BadNumberSpan");
             return false;
         }
     }
     switch (raw._numCount)
     {
         case 1: return ProcessTerminal_C(ref raw, style, ref result);
         case 2: return ProcessTerminal_CT(ref raw, style, ref result);
         case 3: return ProcessTerminal_FULL(ref raw, style, ref result);
     }
     result.SetFailure(ParseFailureKind.Format, "Format_BadNumberSpan");
     return false;
 }
Example #2
0
 private static bool TryNumberToTicks(bool positive, NumberSpanToken current, NumberSpanToken total, NumberSpanToken fraction, out long result)
 {
     if (current.IsInvalidNumber(0xa2e3ff, -1) || total.IsInvalidNumber(0x17, -1))
     {
         result = 0L;
         return false;
     }
     long num = (total._num * 0xc92a69c000L) + current._num;
     if (num >= long.MaxValue || num <= long.MinValue)
     {
         result = 0L;
         return false;
     }
     //long num2 = fraction._num;
     //if (num2 != 0L)
     //{
     //    long num3 = 0xf4240L;
     //    if (fraction._zeroes > 0)
     //    {
     //        long num4 = (long)Math.Pow(10.0, (double)fraction._zeroes);
     //        num3 /= num4;
     //    }
     //    while (num2 < num3)
     //        num2 *= 10L;
     //}
     result = num; // (num * 0x2710) + num2;
     if (positive && result < 0)
     {
         result = 0L;
         return false;
     }
     return true;
 }