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); }
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 }