summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/Single.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/src/System/Single.cs')
-rw-r--r--src/mscorlib/src/System/Single.cs220
1 files changed, 131 insertions, 89 deletions
diff --git a/src/mscorlib/src/System/Single.cs b/src/mscorlib/src/System/Single.cs
index 657d7aef32..1c39df7d94 100644
--- a/src/mscorlib/src/System/Single.cs
+++ b/src/mscorlib/src/System/Single.cs
@@ -10,19 +10,20 @@
**
**
===========================================================*/
-namespace System {
- using System.Globalization;
- using System;
- using System.Runtime.InteropServices;
- using System.Runtime.CompilerServices;
- using System.Runtime.ConstrainedExecution;
- using System.Diagnostics.Contracts;
-
-[Serializable]
-[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
+using System.Globalization;
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
+using System.Runtime.ConstrainedExecution;
+using System.Diagnostics.Contracts;
+
+namespace System
+{
+ [Serializable]
+ [System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct Single : IComparable, IFormattable, IConvertible
- , IComparable<Single>, IEquatable<Single>
+ , IComparable<Single>, IEquatable<Single>
{
internal float m_value;
@@ -37,33 +38,38 @@ namespace System {
public const float NaN = (float)0.0 / (float)0.0;
internal static float NegativeZero = BitConverter.Int32BitsToSingle(unchecked((int)0x80000000));
-
+
[Pure]
[System.Runtime.Versioning.NonVersionable]
- public unsafe static bool IsInfinity(float f) {
+ public unsafe static bool IsInfinity(float f)
+ {
return (*(int*)(&f) & 0x7FFFFFFF) == 0x7F800000;
}
[Pure]
[System.Runtime.Versioning.NonVersionable]
- public unsafe static bool IsPositiveInfinity(float f) {
+ public unsafe static bool IsPositiveInfinity(float f)
+ {
return *(int*)(&f) == 0x7F800000;
}
[Pure]
[System.Runtime.Versioning.NonVersionable]
- public unsafe static bool IsNegativeInfinity(float f) {
+ public unsafe static bool IsNegativeInfinity(float f)
+ {
return *(int*)(&f) == unchecked((int)0xFF800000);
}
[Pure]
[System.Runtime.Versioning.NonVersionable]
- public unsafe static bool IsNaN(float f) {
+ public unsafe static bool IsNaN(float f)
+ {
return (*(int*)(&f) & 0x7FFFFFFF) > 0x7F800000;
}
-
+
[Pure]
- internal unsafe static bool IsNegative(float f) {
+ internal unsafe static bool IsNegative(float f)
+ {
return (*(uint*)(&f) & 0x80000000) == 0x80000000;
}
@@ -73,11 +79,14 @@ namespace System {
// null is considered to be less than any instance.
// If object is not of type Single, this method throws an ArgumentException.
//
- public int CompareTo(Object value) {
- if (value == null) {
+ public int CompareTo(Object value)
+ {
+ if (value == null)
+ {
return 1;
}
- if (value is Single) {
+ if (value is Single)
+ {
float f = (float)value;
if (m_value < f) return -1;
if (m_value > f) return 1;
@@ -89,11 +98,12 @@ namespace System {
else // f is NaN.
return 1;
}
- throw new ArgumentException (Environment.GetResourceString("Arg_MustBeSingle"));
+ throw new ArgumentException(SR.Arg_MustBeSingle);
}
- public int CompareTo(Single value) {
+ public int CompareTo(Single value)
+ {
if (m_value < value) return -1;
if (m_value > value) return 1;
if (m_value == value) return 0;
@@ -106,41 +116,50 @@ namespace System {
}
[System.Runtime.Versioning.NonVersionable]
- public static bool operator ==(Single left, Single right) {
+ public static bool operator ==(Single left, Single right)
+ {
return left == right;
}
[System.Runtime.Versioning.NonVersionable]
- public static bool operator !=(Single left, Single right) {
+ public static bool operator !=(Single left, Single right)
+ {
return left != right;
}
[System.Runtime.Versioning.NonVersionable]
- public static bool operator <(Single left, Single right) {
+ public static bool operator <(Single left, Single right)
+ {
return left < right;
}
[System.Runtime.Versioning.NonVersionable]
- public static bool operator >(Single left, Single right) {
+ public static bool operator >(Single left, Single right)
+ {
return left > right;
}
[System.Runtime.Versioning.NonVersionable]
- public static bool operator <=(Single left, Single right) {
+ public static bool operator <=(Single left, Single right)
+ {
return left <= right;
}
[System.Runtime.Versioning.NonVersionable]
- public static bool operator >=(Single left, Single right) {
+ public static bool operator >=(Single left, Single right)
+ {
return left >= right;
}
- public override bool Equals(Object obj) {
- if (!(obj is Single)) {
+ public override bool Equals(Object obj)
+ {
+ if (!(obj is Single))
+ {
return false;
}
float temp = ((Single)obj).m_value;
- if (temp == m_value) {
+ if (temp == m_value)
+ {
return true;
}
@@ -149,16 +168,19 @@ namespace System {
public bool Equals(Single obj)
{
- if (obj == m_value) {
+ if (obj == m_value)
+ {
return true;
}
return IsNaN(obj) && IsNaN(m_value);
}
- public unsafe override int GetHashCode() {
+ public unsafe override int GetHashCode()
+ {
float f = m_value;
- if (f == 0) {
+ if (f == 0)
+ {
// Ensure that 0 and -0 have the same hash code
return 0;
}
@@ -166,22 +188,26 @@ namespace System {
return v;
}
- public override String ToString() {
+ public override String ToString()
+ {
Contract.Ensures(Contract.Result<String>() != null);
return Number.FormatSingle(m_value, null, NumberFormatInfo.CurrentInfo);
}
- public String ToString(IFormatProvider provider) {
+ public String ToString(IFormatProvider provider)
+ {
Contract.Ensures(Contract.Result<String>() != null);
return Number.FormatSingle(m_value, null, NumberFormatInfo.GetInstance(provider));
}
- public String ToString(String format) {
+ public String ToString(String format)
+ {
Contract.Ensures(Contract.Result<String>() != null);
return Number.FormatSingle(m_value, format, NumberFormatInfo.CurrentInfo);
}
- public String ToString(String format, IFormatProvider provider) {
+ public String ToString(String format, IFormatProvider provider)
+ {
Contract.Ensures(Contract.Result<String>() != null);
return Number.FormatSingle(m_value, format, NumberFormatInfo.GetInstance(provider));
}
@@ -194,139 +220,155 @@ namespace System {
// PositiveInfinity or NegativeInfinity for a number that is too
// large or too small.
//
- public static float Parse(String s) {
+ public static float Parse(String s)
+ {
return Parse(s, NumberStyles.Float | NumberStyles.AllowThousands, NumberFormatInfo.CurrentInfo);
}
- public static float Parse(String s, NumberStyles style) {
+ public static float Parse(String s, NumberStyles style)
+ {
NumberFormatInfo.ValidateParseStyleFloatingPoint(style);
return Parse(s, style, NumberFormatInfo.CurrentInfo);
}
- public static float Parse(String s, IFormatProvider provider) {
+ public static float Parse(String s, IFormatProvider provider)
+ {
return Parse(s, NumberStyles.Float | NumberStyles.AllowThousands, NumberFormatInfo.GetInstance(provider));
}
- public static float Parse(String s, NumberStyles style, IFormatProvider provider) {
+ public static float Parse(String s, NumberStyles style, IFormatProvider provider)
+ {
NumberFormatInfo.ValidateParseStyleFloatingPoint(style);
return Parse(s, style, NumberFormatInfo.GetInstance(provider));
}
-
- private static float Parse(String s, NumberStyles style, NumberFormatInfo info) {
+
+ private static float Parse(String s, NumberStyles style, NumberFormatInfo info)
+ {
return Number.ParseSingle(s, style, info);
}
- public static Boolean TryParse(String s, out Single result) {
+ public static Boolean TryParse(String s, out Single result)
+ {
return TryParse(s, NumberStyles.Float | NumberStyles.AllowThousands, NumberFormatInfo.CurrentInfo, out result);
}
- public static Boolean TryParse(String s, NumberStyles style, IFormatProvider provider, out Single result) {
+ public static Boolean TryParse(String s, NumberStyles style, IFormatProvider provider, out Single result)
+ {
NumberFormatInfo.ValidateParseStyleFloatingPoint(style);
return TryParse(s, style, NumberFormatInfo.GetInstance(provider), out result);
}
-
- private static Boolean TryParse(String s, NumberStyles style, NumberFormatInfo info, out Single result) {
- if (s == null) {
+
+ private static Boolean TryParse(String s, NumberStyles style, NumberFormatInfo info, out Single result)
+ {
+ if (s == null)
+ {
result = 0;
return false;
}
bool success = Number.TryParseSingle(s, style, info, out result);
- if (!success) {
+ if (!success)
+ {
String sTrim = s.Trim();
- if (sTrim.Equals(info.PositiveInfinitySymbol)) {
+ if (sTrim.Equals(info.PositiveInfinitySymbol))
+ {
result = PositiveInfinity;
- } else if (sTrim.Equals(info.NegativeInfinitySymbol)) {
+ }
+ else if (sTrim.Equals(info.NegativeInfinitySymbol))
+ {
result = NegativeInfinity;
- } else if (sTrim.Equals(info.NaNSymbol)) {
+ }
+ else if (sTrim.Equals(info.NaNSymbol))
+ {
result = NaN;
- } else
+ }
+ else
return false; // We really failed
}
return true;
-
}
//
// IConvertible implementation
//
- public TypeCode GetTypeCode() {
+ public TypeCode GetTypeCode()
+ {
return TypeCode.Single;
}
- /// <internalonly/>
- bool IConvertible.ToBoolean(IFormatProvider provider) {
+ bool IConvertible.ToBoolean(IFormatProvider provider)
+ {
return Convert.ToBoolean(m_value);
}
- /// <internalonly/>
- char IConvertible.ToChar(IFormatProvider provider) {
- throw new InvalidCastException(Environment.GetResourceString("InvalidCast_FromTo", "Single", "Char"));
+ char IConvertible.ToChar(IFormatProvider provider)
+ {
+ throw new InvalidCastException(SR.Format(SR.InvalidCast_FromTo, "Single", "Char"));
}
- /// <internalonly/>
- sbyte IConvertible.ToSByte(IFormatProvider provider) {
+ sbyte IConvertible.ToSByte(IFormatProvider provider)
+ {
return Convert.ToSByte(m_value);
}
- /// <internalonly/>
- byte IConvertible.ToByte(IFormatProvider provider) {
+ byte IConvertible.ToByte(IFormatProvider provider)
+ {
return Convert.ToByte(m_value);
}
- /// <internalonly/>
- short IConvertible.ToInt16(IFormatProvider provider) {
+ short IConvertible.ToInt16(IFormatProvider provider)
+ {
return Convert.ToInt16(m_value);
}
- /// <internalonly/>
- ushort IConvertible.ToUInt16(IFormatProvider provider) {
+ ushort IConvertible.ToUInt16(IFormatProvider provider)
+ {
return Convert.ToUInt16(m_value);
}
- /// <internalonly/>
- int IConvertible.ToInt32(IFormatProvider provider) {
+ int IConvertible.ToInt32(IFormatProvider provider)
+ {
return Convert.ToInt32(m_value);
}
- /// <internalonly/>
- uint IConvertible.ToUInt32(IFormatProvider provider) {
+ uint IConvertible.ToUInt32(IFormatProvider provider)
+ {
return Convert.ToUInt32(m_value);
}
- /// <internalonly/>
- long IConvertible.ToInt64(IFormatProvider provider) {
+ long IConvertible.ToInt64(IFormatProvider provider)
+ {
return Convert.ToInt64(m_value);
}
- /// <internalonly/>
- ulong IConvertible.ToUInt64(IFormatProvider provider) {
+ ulong IConvertible.ToUInt64(IFormatProvider provider)
+ {
return Convert.ToUInt64(m_value);
}
- /// <internalonly/>
- float IConvertible.ToSingle(IFormatProvider provider) {
+ float IConvertible.ToSingle(IFormatProvider provider)
+ {
return m_value;
}
- /// <internalonly/>
- double IConvertible.ToDouble(IFormatProvider provider) {
+ double IConvertible.ToDouble(IFormatProvider provider)
+ {
return Convert.ToDouble(m_value);
}
- /// <internalonly/>
- Decimal IConvertible.ToDecimal(IFormatProvider provider) {
+ Decimal IConvertible.ToDecimal(IFormatProvider provider)
+ {
return Convert.ToDecimal(m_value);
}
- /// <internalonly/>
- DateTime IConvertible.ToDateTime(IFormatProvider provider) {
- throw new InvalidCastException(Environment.GetResourceString("InvalidCast_FromTo", "Single", "DateTime"));
+ DateTime IConvertible.ToDateTime(IFormatProvider provider)
+ {
+ throw new InvalidCastException(SR.Format(SR.InvalidCast_FromTo, "Single", "DateTime"));
}
- /// <internalonly/>
- Object IConvertible.ToType(Type type, IFormatProvider provider) {
+ Object IConvertible.ToType(Type type, IFormatProvider provider)
+ {
return Convert.DefaultToType((IConvertible)this, type, provider);
}
}