Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/corlib/System/Double.cs')
-rw-r--r--mcs/class/corlib/System/Double.cs428
1 files changed, 0 insertions, 428 deletions
diff --git a/mcs/class/corlib/System/Double.cs b/mcs/class/corlib/System/Double.cs
deleted file mode 100644
index 9983aedf901..00000000000
--- a/mcs/class/corlib/System/Double.cs
+++ /dev/null
@@ -1,428 +0,0 @@
-//
-// System.Double.cs
-//
-// Author:
-// Miguel de Icaza (miguel@ximian.com)
-// Bob Smith (bob@thestuff.net)
-//
-// (C) Ximian, Inc. http://www.ximian.com
-// (C) Bob Smith. http://www.thestuff.net
-//
-
-using System.Globalization;
-using System.Runtime.CompilerServices;
-
-namespace System {
-
- [Serializable]
- public struct Double : IComparable, IFormattable, IConvertible {
- public const double Epsilon = 4.9406564584124650e-324;
- public const double MaxValue = 1.7976931348623157e308;
- public const double MinValue = -1.7976931348623157e308;
- public const double NaN = 0.0d / 0.0d;
- public const double NegativeInfinity = -1.0d / 0.0d;
- public const double PositiveInfinity = 1.0d / 0.0d;
-
- // VES needs to know about value. public is workaround
- // so source will compile
- public double value;
-
- public int CompareTo (object v)
- {
- if (v == null)
- return 1;
-
- if (!(v is System.Double))
- throw new ArgumentException (Locale.GetText ("Value is not a System.Double"));
-
- if (IsPositiveInfinity(value) && IsPositiveInfinity((double) v)){
- return 0;
- }
-
- if (IsNegativeInfinity(value) && IsNegativeInfinity((double) v)){
- return 0;
- }
-
- if (IsNaN((double) v)) {
- if (IsNaN(value))
- return 0;
- else
- return 1;
- }
-
- return (int) (value - ((double) v));
- }
-
- public override bool Equals (object o)
- {
- if (!(o is System.Double))
- return false;
-
- if (IsNaN ((double)o)) {
- if (IsNaN(value))
- return true;
- else
- return false;
- }
-
- return ((double) o) == value;
- }
-
- public override int GetHashCode ()
- {
- return (int) value;
- }
-
- public static bool IsInfinity (double d)
- {
- return (d == PositiveInfinity || d == NegativeInfinity);
- }
-
- public static bool IsNaN (double d)
- {
- return (d != d);
- }
-
- public static bool IsNegativeInfinity (double d)
- {
- return (d < 0.0d && (d == NegativeInfinity || d == PositiveInfinity));
- }
-
- public static bool IsPositiveInfinity (double d)
- {
- return (d > 0.0d && (d == NegativeInfinity || d == PositiveInfinity));
- }
-
- public static double Parse (string s)
- {
- return Parse (s, (NumberStyles.Float | NumberStyles.AllowThousands), null);
- }
-
- public static double Parse (string s, IFormatProvider fp)
- {
- return Parse (s, (NumberStyles.Float | NumberStyles.AllowThousands), fp);
- }
-
- public static double Parse (string s, NumberStyles style)
- {
- return Parse (s, style, null);
- }
-
- // We're intentionally using constants here to avoid some bigger headaches in mcs.
- // This struct must be compiled before System.Enum so we can't use enums here.
- private const int State_AllowSign = 1;
- private const int State_Digits = 2;
- private const int State_Decimal = 3;
- private const int State_ExponentSign = 4;
- private const int State_Exponent = 5;
- private const int State_ConsumeWhiteSpace = 6;
-
- [MonoTODO("check if digits are group in correct numbers between the group separators")]
- public static double Parse (string s, NumberStyles style, IFormatProvider provider)
- {
- if (s == null) throw new ArgumentNullException();
- if (style > NumberStyles.Any)
- {
- throw new ArgumentException();
- }
- NumberFormatInfo format = NumberFormatInfo.GetInstance(provider);
- if (format == null) throw new Exception("How did this happen?");
- if (s == format.NaNSymbol) return Double.NaN;
- if (s == format.PositiveInfinitySymbol) return Double.PositiveInfinity;
- if (s == format.NegativeInfinitySymbol) return Double.NegativeInfinity;
-
- //
- // validate and prepare string for C
- //
- int len = s.Length;
- byte [] b = new byte [len + 1];
- int didx = 0;
- int sidx = 0;
- char c;
-
- if ((style & NumberStyles.AllowLeadingWhite) != 0){
- while (sidx < len && Char.IsWhiteSpace (c = s [sidx]))
- sidx++;
-
- if (sidx == len)
- throw new FormatException();
- }
-
- bool allow_trailing_white = ((style & NumberStyles.AllowTrailingWhite) != 0);
-
- //
- // Machine state
- //
- int state = State_AllowSign;
-
- //
- // Setup
- //
- string decimal_separator = null;
- string group_separator = null;
- int decimal_separator_len = 0;
- int group_separator_len = 0;
- if ((style & NumberStyles.AllowDecimalPoint) != 0){
- decimal_separator = format.NumberDecimalSeparator;
- decimal_separator_len = decimal_separator.Length;
- }
- if ((style & NumberStyles.AllowThousands) != 0){
- group_separator = format.NumberGroupSeparator;
- group_separator_len = group_separator.Length;
- }
- string positive = format.PositiveSign;
- string negative = format.NegativeSign;
-
- for (; sidx < len; sidx++){
- c = s [sidx];
-
- switch (state){
- case State_AllowSign:
- if ((style & NumberStyles.AllowLeadingSign) != 0){
- if (c == positive [0] &&
- s.Substring (sidx, positive.Length) == positive){
- state = State_Digits;
- sidx += positive.Length-1;
- continue;
- }
-
- if (c == negative [0] &&
- s.Substring (sidx, negative.Length) == negative){
- state = State_Digits;
- b [didx++] = (byte) '-';
- sidx += negative.Length-1;
- continue;
- }
- }
- state = State_Digits;
- goto case State_Digits;
-
- case State_Digits:
- if (Char.IsDigit (c)){
- b [didx++] = (byte) c;
- break;
- }
- if (c == 'e' || c == 'E')
- goto case State_Decimal;
-
- if (decimal_separator != null &&
- decimal_separator [0] == c){
- if (s.Substring (sidx, decimal_separator_len) ==
- decimal_separator){
- b [didx++] = (byte) '.';
- sidx += decimal_separator_len-1;
- state = State_Decimal;
- break;
- }
- }
- if (group_separator != null &&
- group_separator [0] == c){
- if (s.Substring (sidx, group_separator_len) ==
- group_separator){
- sidx += group_separator_len-1;
- state = State_Digits;
- break;
- }
- }
-
- if (Char.IsWhiteSpace (c))
- goto case State_ConsumeWhiteSpace;
-
- throw new FormatException ("Unknown char: " + c);
-
- case State_Decimal:
- if (Char.IsDigit (c)){
- b [didx++] = (byte) c;
- break;
- }
-
- if (c == 'e' || c == 'E'){
- if ((style & NumberStyles.AllowExponent) == 0)
- throw new FormatException ("Unknown char: " + c);
- b [didx++] = (byte) c;
- state = State_ExponentSign;
- break;
- }
-
- if (Char.IsWhiteSpace (c))
- goto case State_ConsumeWhiteSpace;
- throw new FormatException ("Unknown char: " + c);
-
- case State_ExponentSign:
- if (Char.IsDigit (c)){
- state = State_Exponent;
- goto case State_Exponent;
- }
-
- if (c == positive [0] &&
- s.Substring (sidx, positive.Length) == positive){
- state = State_Digits;
- sidx += positive.Length-1;
- continue;
- }
-
- if (c == negative [0] &&
- s.Substring (sidx, negative.Length) == negative){
- state = State_Digits;
- b [didx++] = (byte) '-';
- sidx += negative.Length-1;
- continue;
- }
-
- if (Char.IsWhiteSpace (c))
- goto case State_ConsumeWhiteSpace;
-
- throw new FormatException ("Unknown char: " + c);
-
- case State_Exponent:
- if (Char.IsDigit (c)){
- b [didx++] = (byte) c;
- break;
- }
-
- if (Char.IsWhiteSpace (c))
- goto case State_ConsumeWhiteSpace;
- throw new FormatException ("Unknown char: " + c);
-
- case State_ConsumeWhiteSpace:
- if (allow_trailing_white && Char.IsWhiteSpace (c))
- break;
- throw new FormatException ("Unknown char");
- }
- }
-
- b [didx] = 0;
- unsafe {
- fixed (byte *p = &b [0]){
- double retVal = ParseImpl (p);
- if (IsPositiveInfinity(retVal) || IsNegativeInfinity(retVal))
- throw new OverflowException();
-
- return retVal;
- }
- }
- }
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- unsafe private static extern double ParseImpl (byte *byte_ptr);
-
- public override string ToString ()
- {
- return ToString (null, null);
- }
-
- public string ToString (IFormatProvider fp)
- {
- return ToString (null, fp);
- }
-
- public string ToString (string format)
- {
- return ToString (format, null);
- }
-
- [MonoTODO]
- public string ToString (string format, IFormatProvider fp)
- {
- // FIXME: Need to pass format and provider info to this call too.
- return ToStringImpl(value);
- }
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- private static extern string ToStringImpl (double value);
-
- // =========== IConvertible Methods =========== //
-
- public TypeCode GetTypeCode ()
- {
- return TypeCode.Double;
- }
-
- object IConvertible.ToType (Type conversionType, IFormatProvider provider)
- {
- return System.Convert.ToType(value, conversionType, provider);
- }
-
- bool IConvertible.ToBoolean (IFormatProvider provider)
- {
- return System.Convert.ToBoolean(value);
- }
-
- byte IConvertible.ToByte (IFormatProvider provider)
- {
- return System.Convert.ToByte(value);
- }
-
- char IConvertible.ToChar (IFormatProvider provider)
- {
- throw new InvalidCastException();
- }
-
- [CLSCompliant(false)]
- DateTime IConvertible.ToDateTime (IFormatProvider provider)
- {
- throw new InvalidCastException();
- }
-
- decimal IConvertible.ToDecimal (IFormatProvider provider)
- {
- return System.Convert.ToDecimal(value);
- }
-
- double IConvertible.ToDouble (IFormatProvider provider)
- {
- return System.Convert.ToDouble(value);
- }
-
- short IConvertible.ToInt16 (IFormatProvider provider)
- {
- return System.Convert.ToInt16(value);
- }
-
- int IConvertible.ToInt32 (IFormatProvider provider)
- {
- return System.Convert.ToInt32(value);
- }
-
- long IConvertible.ToInt64 (IFormatProvider provider)
- {
- return System.Convert.ToInt64(value);
- }
-
- [CLSCompliant(false)]
- sbyte IConvertible.ToSByte (IFormatProvider provider)
- {
- return System.Convert.ToSByte(value);
- }
-
- float IConvertible.ToSingle (IFormatProvider provider)
- {
- return System.Convert.ToSingle(value);
- }
-
-/*
- string IConvertible.ToString (IFormatProvider provider)
- {
- return ToString(provider);
- }
-*/
-
- [CLSCompliant(false)]
- ushort IConvertible.ToUInt16 (IFormatProvider provider)
- {
- return System.Convert.ToUInt16(value);
- }
-
- [CLSCompliant(false)]
- uint IConvertible.ToUInt32 (IFormatProvider provider)
- {
- return System.Convert.ToUInt32(value);
- }
-
- [CLSCompliant(false)]
- ulong IConvertible.ToUInt64 (IFormatProvider provider)
- {
- return System.Convert.ToUInt64(value);
- }
- }
-}