Ejemplo n.º 1
0
        protected virtual TypeCode GetIntegerTypeCode(CiIntegerType integer, bool promote)
        {
            if (integer == CiSystem.LongType)
            {
                return(TypeCode.Int64);
            }
            if (promote || integer == CiSystem.IntType)
            {
                return(TypeCode.Int32);
            }
            CiRangeType range = (CiRangeType)integer;

            if (range.Min < 0)
            {
                if (range.Min < short.MinValue || range.Max > short.MaxValue)
                {
                    return(TypeCode.Int32);
                }
                if (range.Min < sbyte.MinValue || range.Max > sbyte.MaxValue)
                {
                    return(TypeCode.Int16);
                }
                return(TypeCode.SByte);
            }
            if (range.Max > ushort.MaxValue)
            {
                return(TypeCode.Int32);
            }
            if (range.Max > byte.MaxValue)
            {
                return(TypeCode.UInt16);
            }
            return(TypeCode.Byte);
        }
Ejemplo n.º 2
0
        protected override TypeCode GetTypeCode(CiIntegerType integer, bool promote)
        {
            if (integer == CiSystem.LongType)
            {
                return(TypeCode.Int64);
            }
            if (promote || integer == CiSystem.IntType)
            {
                return(TypeCode.Int32);
            }
            CiRangeType range = (CiRangeType)integer;

            if (range.Min < 0)
            {
                if (range.Min < short.MinValue || range.Max > short.MaxValue)
                {
                    return(TypeCode.Int32);
                }
                if (range.Min < sbyte.MinValue || range.Max > sbyte.MaxValue)
                {
                    return(TypeCode.Int16);
                }
                return(TypeCode.SByte);
            }
            if (range.Max > short.MaxValue)
            {
                return(TypeCode.Int32);
            }
            if (range.Max > byte.MaxValue)
            {
                return(TypeCode.Int16);
            }
            if (range.Min == range.Max && range.Max > sbyte.MaxValue)     // CiLiteral
            {
                return(TypeCode.Byte);
            }
            return(TypeCode.SByte);    // store unsigned bytes in Java signed bytes
        }