public static SqlOffsetSpec Create(SqlNumberLiteral sqlNumberLiteral)
        {
            if (sqlNumberLiteral == null)
            {
                throw new ArgumentNullException(nameof(sqlNumberLiteral));
            }

            long value;

            if (!sqlNumberLiteral.Value.IsInteger)
            {
                throw new ArgumentOutOfRangeException($"Expected {nameof(sqlNumberLiteral)} to be an integer.");
            }

            value = Number64.ToLong(sqlNumberLiteral.Value);
            if (value < PremadeOffsetIndex && value >= 0)
            {
                return(SqlOffsetSpec.PremadeOffsetSpecs[value]);
            }

            SqlScalarExpression offsetExpression = SqlLiteralScalarExpression.Create(
                SqlNumberLiteral.Create(
                    value));

            return(new SqlOffsetSpec(offsetExpression));
        }
Exemplo n.º 2
0
        public override int Visit(SqlNumberLiteral sqlNumberLiteral)
        {
            int hashCode = SqlNumberLiteralHashCode;

            hashCode = CombineHashes(hashCode, sqlNumberLiteral.Value.GetHashCode());
            return(hashCode);
        }
Exemplo n.º 3
0
        public static SqlNumberLiteral Create(long number)
        {
            SqlNumberLiteral sqlNumberLiteral;

            if (!SqlNumberLiteral.FrequentLongs.TryGetValue(number, out sqlNumberLiteral))
            {
                sqlNumberLiteral = new SqlNumberLiteral(number);
            }

            return(sqlNumberLiteral);
        }
        public static SqlNumberLiteral Create(Number64 number64)
        {
            SqlNumberLiteral sqlNumberLiteral;

            if (number64.IsDouble)
            {
                if (!SqlNumberLiteral.FrequentDoubles.TryGetValue(Number64.ToDouble(number64), out sqlNumberLiteral))
                {
                    sqlNumberLiteral = new SqlNumberLiteral(number64);
                }
            }
            else
            {
                if (!SqlNumberLiteral.FrequentLongs.TryGetValue(Number64.ToLong(number64), out sqlNumberLiteral))
                {
                    sqlNumberLiteral = new SqlNumberLiteral(number64);
                }
            }

            return(sqlNumberLiteral);
        }
        public override void Visit(SqlNumberLiteral sqlNumberLiteral)
        {
            // We have to use InvariantCulture due to number formatting.
            // "1234.1234" is correct while "1234,1234" is incorrect.
            if (sqlNumberLiteral.Value.IsDouble)
            {
                string literalString = sqlNumberLiteral.Value.ToString(CultureInfo.InvariantCulture);
                double literalValue  = 0.0;
                if (!sqlNumberLiteral.Value.IsNaN &&
                    !sqlNumberLiteral.Value.IsInfinity &&
                    (!double.TryParse(literalString, NumberStyles.Number, CultureInfo.InvariantCulture, out literalValue) ||
                     !Number64.ToDouble(sqlNumberLiteral.Value).Equals(literalValue)))
                {
                    literalString = sqlNumberLiteral.Value.ToString("G17", CultureInfo.InvariantCulture);
                }

                this.writer.Write(literalString);
            }
            else
            {
                this.writer.Write(sqlNumberLiteral.Value.ToString(CultureInfo.InvariantCulture));
            }
        }
 public override SqlObject Visit(SqlTopSpec sqlTopSpec)
 {
     return(SqlTopSpec.Create(SqlNumberLiteral.Create(0)));
 }
 public override SqlObject Visit(SqlNumberLiteral sqlNumberLiteral)
 {
     return(SqlNumberLiteral.Create(
                Number64.ToDouble(
                    this.GetObfuscatedNumber(sqlNumberLiteral.Value))));
 }
 public abstract void Visit(SqlNumberLiteral literal);
 public override void Visit(SqlNumberLiteral sqlNumberLiteral)
 {
     SqlObjectTextSerializer.WriteNumber64(this.writer.GetStringBuilder(), sqlNumberLiteral.Value);
 }
 public override void Visit(SqlNumberLiteral sqlNumberLiteral)
 {
     // We have to use InvariantCulture due to number formatting.
     // "1234.1234" is correct while "1234,1234" is incorrect.
     this.writer.Write(sqlNumberLiteral.Value.ToString(CultureInfo.InvariantCulture));
 }
Exemplo n.º 11
0
 private SqlNumberPathExpression(SqlPathExpression parentPath, SqlNumberLiteral value)
     : base(SqlObjectKind.NumberPathExpression, parentPath)
 {
     this.Value = value;
 }
Exemplo n.º 12
0
 public static SqlNumberPathExpression Create(SqlPathExpression parentPath, SqlNumberLiteral value)
 {
     return(new SqlNumberPathExpression(parentPath, value));
 }
 public override void Visit(SqlNumberLiteral sqlNumberLiteral)
 {
     this.writer.Write(sqlNumberLiteral.ToString());
 }