Jil.DeserializeDynamic.ObjectBuilder.PutFastNumber C# (CSharp) Method

PutFastNumber() public method

public PutFastNumber ( bool negative, ulong beforeDot, ulong afterDot, byte afterDotLength, long afterE ) : void
negative bool
beforeDot ulong
afterDot ulong
afterDotLength byte
afterE long
return void
        public void PutFastNumber(bool negative, ulong beforeDot, ulong afterDot, byte afterDotLength, long afterE)
        {
            var num = JsonObject.ForFastNumber(negative, beforeDot, afterDot, afterDotLength, afterE, Options);
            if (BeingBuilt == null)
            {
                BeingBuilt = num;
            }
            else
            {
                BeingBuilt.Put(num);
            }
        }

Usage Example

Example #1
0
        static void DeserializeNumber(char leadingChar, TextReader reader, ObjectBuilder builder)
        {
            if (!UseFastNumberParsing)
            {
                var number = Methods.ReadDouble(leadingChar, reader, ref builder.CommonStringBuffer);

                builder.PutNumber(number);

                return;
            }

            bool  negative;
            ulong beforeDot;
            long  afterE;
            uint  afterDot;
            byte  afterDotLen;
            byte  extraOrdersOfMagnitude;

            if (leadingChar == '-')
            {
                var next = reader.Read();
                if (next != '-' && !(next >= '0' && next <= '9'))
                {
                    throw new DeserializationException("Expected -, or digit", reader, next == -1);
                }

                leadingChar = (char)next;
                negative    = true;
            }
            else
            {
                negative = false;
            }

            beforeDot = Methods.ReadULong(leadingChar, reader, out extraOrdersOfMagnitude);
            var c = reader.Peek();

            if (c == '.')
            {
                reader.Read();
                c = reader.Read();
                if (c < '0' || c > '9')
                {
                    throw new DeserializationException("Expected digit", reader, c == -1);
                }

                afterDot = Methods.ReadUInt((char)c, reader, out afterDotLen);

                c = reader.Peek();
            }
            else
            {
                afterDot = afterDotLen = 0;
            }

            if (c == 'e' || c == 'E')
            {
                reader.Read();
                c = reader.Read();
                if (c == '+')
                {
                    c = reader.Read();
                }
                if (c != '-' && !(c >= '0' || c <= '9'))
                {
                    throw new DeserializationException("Expected -, +, or digit", reader, c == -1);
                }
                afterE = Methods.ReadLong((char)c, reader);
            }
            else
            {
                afterE = 0;
            }

            if (extraOrdersOfMagnitude != 0)
            {
                try
                {
                    checked
                    {
                        afterE += extraOrdersOfMagnitude;
                    }
                }
                catch (OverflowException)
                {
                    throw new DeserializationException("Number too large to be parsed encountered", reader, false);
                }
            }

            builder.PutFastNumber(negative, beforeDot, afterDot, afterDotLen, afterE);
        }
All Usage Examples Of Jil.DeserializeDynamic.ObjectBuilder::PutFastNumber