Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / SQLTypes / SQLSingle.cs / 1305376 / SQLSingle.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //junfang //[....] //[....] //----------------------------------------------------------------------------- //************************************************************************* // @File: SqlSingle.cs // // Create by: JunFang // // Purpose: Implementation of SqlSingle which is equivalent to // data type "real" in SQL Server // // Notes: // // History: // // 1/30/2000 JunFang Created and implemented as first drop. // // @EndHeader@ //************************************************************************* using System; using System.Data.Common; using System.Runtime.InteropServices; using System.Globalization; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; namespace System.Data.SqlTypes { ////// [StructLayout(LayoutKind.Sequential)] [Serializable] [XmlSchemaProvider("GetXsdType")] public struct SqlSingle : INullable, IComparable, IXmlSerializable { private bool m_fNotNull; // false if null private float m_value; // constructor // construct a Null private SqlSingle(bool fNull) { m_fNotNull = false; m_value = (float)0.0; } ////// Represents a floating point number within the range of -3.40E +38 through /// 3.40E +38 to be stored in or retrieved from a database. /// ////// public SqlSingle(float value) { if (Single.IsInfinity(value) || Single.IsNaN(value)) throw new OverflowException(SQLResource.ArithOverflowMessage); else { m_fNotNull = true; m_value = value; } } ///[To be supplied.] ////// public SqlSingle(double value) : this(checked((float)value)) { } // INullable ///[To be supplied.] ////// public bool IsNull { get { return !m_fNotNull;} } // property: Value ///[To be supplied.] ////// public float Value { get { if (m_fNotNull) return m_value; else throw new SqlNullValueException(); } } // Implicit conversion from float to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(float x) { return new SqlSingle(x); } // Explicit conversion from SqlSingle to float. Throw exception if x is Null. ///[To be supplied.] ////// public static explicit operator float(SqlSingle x) { return x.Value; } ///[To be supplied.] ////// public override String ToString() { return IsNull ? SQLResource.NullString : m_value.ToString((IFormatProvider)null); } ///[To be supplied.] ////// public static SqlSingle Parse(String s) { if (s == SQLResource.NullString) return SqlSingle.Null; else return new SqlSingle(Single.Parse(s, CultureInfo.InvariantCulture)); } // Unary operators ///[To be supplied.] ////// public static SqlSingle operator -(SqlSingle x) { return x.IsNull ? Null : new SqlSingle(-x.m_value); } // Binary operators // Arithmetic operators ///[To be supplied.] ////// public static SqlSingle operator +(SqlSingle x, SqlSingle y) { if (x.IsNull || y.IsNull) return Null; float value = x.m_value + y.m_value; if (Single.IsInfinity(value)) throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } ///[To be supplied.] ////// public static SqlSingle operator -(SqlSingle x, SqlSingle y) { if (x.IsNull || y.IsNull) return Null; float value = x.m_value - y.m_value; if (Single.IsInfinity(value)) throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } ///[To be supplied.] ////// public static SqlSingle operator *(SqlSingle x, SqlSingle y) { if (x.IsNull || y.IsNull) return Null; float value = x.m_value * y.m_value; if (Single.IsInfinity(value)) throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } ///[To be supplied.] ////// public static SqlSingle operator /(SqlSingle x, SqlSingle y) { if (x.IsNull || y.IsNull) return Null; if (y.m_value == (float)0.0) throw new DivideByZeroException(SQLResource.DivideByZeroMessage); float value = x.m_value / y.m_value; if (Single.IsInfinity(value)) throw new OverflowException(SQLResource.ArithOverflowMessage); return new SqlSingle(value); } // Implicit conversions // Implicit conversion from SqlBoolean to SqlSingle ///[To be supplied.] ////// public static explicit operator SqlSingle(SqlBoolean x) { return x.IsNull ? Null : new SqlSingle(x.ByteValue); } // Implicit conversion from SqlByte to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(SqlByte x) { // Will not overflow return x.IsNull ? Null : new SqlSingle((float)(x.Value)); } // Implicit conversion from SqlInt16 to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(SqlInt16 x) { // Will not overflow return x.IsNull ? Null : new SqlSingle((float)(x.Value)); } // Implicit conversion from SqlInt32 to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(SqlInt32 x) { // Will not overflow return x.IsNull ? Null : new SqlSingle((float)(x.Value)); } // Implicit conversion from SqlInt64 to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(SqlInt64 x) { // Will not overflow return x.IsNull ? Null : new SqlSingle((float)(x.Value)); } // Implicit conversion from SqlMoney to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(SqlMoney x) { return x.IsNull ? Null : new SqlSingle(x.ToDouble()); } // Implicit conversion from SqlDecimal to SqlSingle ///[To be supplied.] ////// public static implicit operator SqlSingle(SqlDecimal x) { // Will not overflow return x.IsNull ? Null : new SqlSingle(x.ToDouble()); } // Explicit conversions // Explicit conversion from SqlDouble to SqlSingle ///[To be supplied.] ////// public static explicit operator SqlSingle(SqlDouble x) { return x.IsNull ? Null : new SqlSingle(x.Value); } // Explicit conversion from SqlString to SqlSingle // Throws FormatException or OverflowException if necessary. ///[To be supplied.] ////// public static explicit operator SqlSingle(SqlString x) { if (x.IsNull) return SqlSingle.Null; return Parse(x.Value); } // Overloading comparison operators ///[To be supplied.] ////// public static SqlBoolean operator==(SqlSingle x, SqlSingle y) { return(x.IsNull || y.IsNull) ? SqlBoolean.Null : new SqlBoolean(x.m_value == y.m_value); } ///[To be supplied.] ////// public static SqlBoolean operator!=(SqlSingle x, SqlSingle y) { return ! (x == y); } ///[To be supplied.] ////// public static SqlBoolean operator<(SqlSingle x, SqlSingle y) { return(x.IsNull || y.IsNull) ? SqlBoolean.Null : new SqlBoolean(x.m_value < y.m_value); } ///[To be supplied.] ////// public static SqlBoolean operator>(SqlSingle x, SqlSingle y) { return(x.IsNull || y.IsNull) ? SqlBoolean.Null : new SqlBoolean(x.m_value > y.m_value); } ///[To be supplied.] ////// public static SqlBoolean operator<=(SqlSingle x, SqlSingle y) { return(x.IsNull || y.IsNull) ? SqlBoolean.Null : new SqlBoolean(x.m_value <= y.m_value); } ///[To be supplied.] ////// public static SqlBoolean operator>=(SqlSingle x, SqlSingle y) { return(x.IsNull || y.IsNull) ? SqlBoolean.Null : new SqlBoolean(x.m_value >= y.m_value); } //-------------------------------------------------- // Alternative methods for overloaded operators //-------------------------------------------------- // Alternative method for operator + public static SqlSingle Add(SqlSingle x, SqlSingle y) { return x + y; } // Alternative method for operator - public static SqlSingle Subtract(SqlSingle x, SqlSingle y) { return x - y; } // Alternative method for operator * public static SqlSingle Multiply(SqlSingle x, SqlSingle y) { return x * y; } // Alternative method for operator / public static SqlSingle Divide(SqlSingle x, SqlSingle y) { return x / y; } // Alternative method for operator == public static SqlBoolean Equals(SqlSingle x, SqlSingle y) { return (x == y); } // Alternative method for operator != public static SqlBoolean NotEquals(SqlSingle x, SqlSingle y) { return (x != y); } // Alternative method for operator < public static SqlBoolean LessThan(SqlSingle x, SqlSingle y) { return (x < y); } // Alternative method for operator > public static SqlBoolean GreaterThan(SqlSingle x, SqlSingle y) { return (x > y); } // Alternative method for operator <= public static SqlBoolean LessThanOrEqual(SqlSingle x, SqlSingle y) { return (x <= y); } // Alternative method for operator >= public static SqlBoolean GreaterThanOrEqual(SqlSingle x, SqlSingle y) { return (x >= y); } // Alternative method for conversions. public SqlBoolean ToSqlBoolean() { return (SqlBoolean)this; } public SqlByte ToSqlByte() { return (SqlByte)this; } public SqlDouble ToSqlDouble() { return (SqlDouble)this; } public SqlInt16 ToSqlInt16() { return (SqlInt16)this; } public SqlInt32 ToSqlInt32() { return (SqlInt32)this; } public SqlInt64 ToSqlInt64() { return (SqlInt64)this; } public SqlMoney ToSqlMoney() { return (SqlMoney)this; } public SqlDecimal ToSqlDecimal() { return (SqlDecimal)this; } public SqlString ToSqlString() { return (SqlString)this; } // IComparable // Compares this object to another object, returning an integer that // indicates the relationship. // Returns a value less than zero if this < object, zero if this = object, // or a value greater than zero if this > object. // null is considered to be less than any instance. // If object is not of same type, this method throws an ArgumentException. ///[To be supplied.] ////// public int CompareTo(Object value) { if (value is SqlSingle) { SqlSingle i = (SqlSingle)value; return CompareTo(i); } throw ADP.WrongType(value.GetType(), typeof(SqlSingle)); } public int CompareTo(SqlSingle value) { // If both Null, consider them equal. // Otherwise, Null is less than anything. if (IsNull) return value.IsNull ? 0 : -1; else if (value.IsNull) return 1; if (this < value) return -1; if (this > value) return 1; return 0; } // Compares this instance with a specified object ///[To be supplied.] ////// public override bool Equals(Object value) { if (!(value is SqlSingle)) { return false; } SqlSingle i = (SqlSingle)value; if (i.IsNull || IsNull) return (i.IsNull && IsNull); else return (this == i).Value; } // For hashing purpose ///[To be supplied.] ////// public override int GetHashCode() { return IsNull ? 0 : Value.GetHashCode(); } ///[To be supplied.] ////// XmlSchema IXmlSerializable.GetSchema() { return null; } ///[To be supplied.] ////// void IXmlSerializable.ReadXml(XmlReader reader) { string isNull = reader.GetAttribute("nil", XmlSchema.InstanceNamespace); if (isNull != null && XmlConvert.ToBoolean(isNull)) { // VSTFDevDiv# 479603 - SqlTypes read null value infinitely and never read the next value. Fix - Read the next value. reader.ReadElementString(); m_fNotNull = false; } else { m_value = XmlConvert.ToSingle(reader.ReadElementString()); m_fNotNull = true; } } ///[To be supplied.] ////// void IXmlSerializable.WriteXml(XmlWriter writer) { if (IsNull) { writer.WriteAttributeString("xsi", "nil", XmlSchema.InstanceNamespace, "true"); } else { writer.WriteString(XmlConvert.ToString(m_value)); } } ///[To be supplied.] ////// public static XmlQualifiedName GetXsdType(XmlSchemaSet schemaSet) { return new XmlQualifiedName("float", XmlSchema.Namespace); } ///[To be supplied.] ////// public static readonly SqlSingle Null = new SqlSingle(true); ///[To be supplied.] ////// public static readonly SqlSingle Zero = new SqlSingle((float)0.0); ///[To be supplied.] ////// public static readonly SqlSingle MinValue = new SqlSingle(Single.MinValue); ///[To be supplied.] ////// public static readonly SqlSingle MaxValue = new SqlSingle(Single.MaxValue); } // SqlSingle } // namespace System.Data.SqlTypes // File provided for Reference Use Only by Microsoft Corporation (c) 2007.[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProofTokenCryptoHandle.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- BmpBitmapDecoder.cs
- EndpointDiscoveryMetadataCD1.cs
- AddInActivator.cs
- TemplateBamlTreeBuilder.cs
- PrintPreviewControl.cs
- AppModelKnownContentFactory.cs
- TextEditorParagraphs.cs
- DbConnectionPoolIdentity.cs
- JavaScriptObjectDeserializer.cs
- LoginViewDesigner.cs
- DisplayMemberTemplateSelector.cs
- DocumentCollection.cs
- MatrixValueSerializer.cs
- DocumentViewerHelper.cs
- RangeBase.cs
- ExecutedRoutedEventArgs.cs
- StateManagedCollection.cs
- FilteredXmlReader.cs
- AlphabetConverter.cs
- CheckBoxList.cs
- Freezable.cs
- DocComment.cs
- ChannelSinkStacks.cs
- RequestCacheValidator.cs
- EdmType.cs
- TextAdaptor.cs
- EdmComplexTypeAttribute.cs
- SkewTransform.cs
- HoistedLocals.cs
- HostingEnvironment.cs
- PenCursorManager.cs
- WebDescriptionAttribute.cs
- AutoGeneratedField.cs
- RoleManagerEventArgs.cs
- EntryIndex.cs
- xdrvalidator.cs
- XmlIncludeAttribute.cs
- AsyncSerializedWorker.cs
- future.cs
- NamedPipeWorkerProcess.cs
- BulletedListEventArgs.cs
- Font.cs
- TableSectionStyle.cs
- EntityKeyElement.cs
- SplitterEvent.cs
- RtfToXamlReader.cs
- ImageCodecInfoPrivate.cs
- PropertyInformationCollection.cs
- WebRequestModulesSection.cs
- XamlPoint3DCollectionSerializer.cs
- DataSourceSelectArguments.cs
- CompositeActivityTypeDescriptor.cs
- MatrixCamera.cs
- ApplicationDirectory.cs
- PageTrueTypeFont.cs
- PathGeometry.cs
- MenuItemCollection.cs
- HtmlMobileTextWriter.cs
- HttpListenerTimeoutManager.cs
- LinkButton.cs
- WinCategoryAttribute.cs
- AbsoluteQuery.cs
- HTTPNotFoundHandler.cs
- Normalization.cs
- ObjectCloneHelper.cs
- WindowsListViewGroupHelper.cs
- DbDataRecord.cs
- Binding.cs
- ServiceModelConfigurationElementCollection.cs
- ComponentSerializationService.cs
- AutoCompleteStringCollection.cs
- ThousandthOfEmRealPoints.cs
- UInt64.cs
- RadioButtonPopupAdapter.cs
- OleDbDataReader.cs
- SymLanguageType.cs
- Win32Exception.cs
- SqlNodeAnnotations.cs
- SpecularMaterial.cs
- ExpressionVisitor.cs
- MulticastIPAddressInformationCollection.cs
- Registry.cs
- graph.cs
- ParseChildrenAsPropertiesAttribute.cs
- XmlHierarchyData.cs
- TextEditorSelection.cs
- XmlSchemaIdentityConstraint.cs
- Dynamic.cs
- ClientSettingsStore.cs
- _NTAuthentication.cs
- DataSourceControl.cs
- WebPartConnectionsDisconnectVerb.cs
- PageStatePersister.cs
- WebHeaderCollection.cs
- CheckBoxFlatAdapter.cs
- ConvertEvent.cs
- HtmlInputImage.cs
- SerialStream.cs