Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / DataOracleClient / System / Data / OracleClient / OracleMonthSpan.cs / 1 / OracleMonthSpan.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Data.OracleClient { using System; using System.Data.SqlTypes; using System.Data.Common; using System.Diagnostics; using System.Globalization; using System.Runtime.InteropServices; using System.Text; //--------------------------------------------------------------------- // OracleMonthSpan // // This class implements support the Oracle 9i 'INTERVAL YEAR TO MONTH' // internal data type. // [StructLayout(LayoutKind.Sequential, Pack=1)] public struct OracleMonthSpan : IComparable, INullable { private int _value; private const int MaxMonth = 176556; private const int MinMonth = -176556; public static readonly OracleMonthSpan MaxValue = new OracleMonthSpan(MaxMonth); // 4172 BC - 9999 AD * 12 months/year public static readonly OracleMonthSpan MinValue = new OracleMonthSpan(MinMonth); // 4172 BC - 9999 AD * 12 months/year public static readonly OracleMonthSpan Null = new OracleMonthSpan(true); private const int NullValue = Int32.MaxValue; // Construct from nothing -- the value will be null internal OracleMonthSpan(bool isNull) { _value = NullValue; } // Construct from an integer number of months public OracleMonthSpan (int months) { _value = months; AssertValid(_value); } public OracleMonthSpan (Int32 years, Int32 months) { try { checked { _value = (years * 12) + months; } // Will assert below if invalid. } catch (System.OverflowException) { throw ADP.MonthOutOfRange(); } AssertValid(_value); } // Copy constructor public OracleMonthSpan (OracleMonthSpan from) { _value = from._value; } // (internal) construct from a row/parameter binding internal OracleMonthSpan (NativeBuffer buffer, int valueOffset) { _value = MarshalToInt32(buffer, valueOffset); } public bool IsNull { get { return (NullValue == _value); } } public int Value { get { if (IsNull) { throw ADP.DataIsNull(); } return _value; } } static private void AssertValid(int monthSpan) { if (monthSpan < MinMonth || monthSpan > MaxMonth) { throw ADP.MonthOutOfRange(); } } public int CompareTo(object obj) { if (obj.GetType() == typeof(OracleMonthSpan)) { OracleMonthSpan odt = (OracleMonthSpan)obj; // If both values are Null, consider them equal. // Otherwise, Null is less than anything. if (IsNull) { return odt.IsNull ? 0 : -1; } if (odt.IsNull) { return 1; } // Neither value is null, do the comparison. int result = _value.CompareTo(odt._value); return result; } throw ADP.WrongType(obj.GetType(), typeof(OracleMonthSpan)); } public override bool Equals(object value) { if (value is OracleMonthSpan) { return (this == (OracleMonthSpan)value).Value; } else { return false; } } public override int GetHashCode() { return IsNull ? 0 : _value.GetHashCode(); } static internal int MarshalToInt32( NativeBuffer buffer, int valueOffset) { byte[] ociValue = buffer.ReadBytes(valueOffset, 5); int years = (int)((long)( (int)ociValue[0] << 24 | (int)ociValue[1] << 16 | (int)ociValue[2] << 8 | (int)ociValue[3] ) - 0x80000000); int months = (int)ociValue[4] - 60; int result = (years * 12) + months; AssertValid(result); return result; } static internal int MarshalToNative(object value, NativeBuffer buffer, int offset) { int from; if ( value is OracleMonthSpan ) from = ((OracleMonthSpan)value)._value; else from = (int)value; byte[] ociValue = new byte[5]; int years = (int)((long)(from / 12) + 0x80000000); int months = from % 12; // DEVNOTE: undoubtedly, this is Intel byte order specific, but how // do I verify what Oracle needs on a non Intel machine? ociValue[0] = (byte)((years >> 24)); ociValue[1] = (byte)((years >> 16) & 0xff); ociValue[2] = (byte)((years >> 8) & 0xff); ociValue[3] = (byte)(years & 0xff); ociValue[4] = (byte)(months + 60); buffer.WriteBytes(offset, ociValue, 0, 5); return 5; } public static OracleMonthSpan Parse(string s) { int ms = Int32.Parse(s, CultureInfo.InvariantCulture); return new OracleMonthSpan(ms); } public override string ToString() { if (IsNull) { return ADP.NullString; } string retval = Value.ToString(CultureInfo.CurrentCulture); return retval; } public static OracleBoolean Equals(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator == return (x == y); } public static OracleBoolean GreaterThan(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator > return (x > y); } public static OracleBoolean GreaterThanOrEqual(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator >= return (x >= y); } public static OracleBoolean LessThan(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator < return (x < y); } public static OracleBoolean LessThanOrEqual(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator <= return (x <= y); } public static OracleBoolean NotEquals(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator != return (x != y); } public static explicit operator int(OracleMonthSpan x) { if (x.IsNull) { throw ADP.DataIsNull(); } return x.Value; } public static explicit operator OracleMonthSpan(string x) { return OracleMonthSpan.Parse(x); } public static OracleBoolean operator== (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) == 0); } public static OracleBoolean operator> (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) > 0); } public static OracleBoolean operator>= (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) >= 0); } public static OracleBoolean operator< (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) < 0); } public static OracleBoolean operator<= (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) <= 0); } public static OracleBoolean operator!= (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) != 0); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Data.OracleClient { using System; using System.Data.SqlTypes; using System.Data.Common; using System.Diagnostics; using System.Globalization; using System.Runtime.InteropServices; using System.Text; //--------------------------------------------------------------------- // OracleMonthSpan // // This class implements support the Oracle 9i 'INTERVAL YEAR TO MONTH' // internal data type. // [StructLayout(LayoutKind.Sequential, Pack=1)] public struct OracleMonthSpan : IComparable, INullable { private int _value; private const int MaxMonth = 176556; private const int MinMonth = -176556; public static readonly OracleMonthSpan MaxValue = new OracleMonthSpan(MaxMonth); // 4172 BC - 9999 AD * 12 months/year public static readonly OracleMonthSpan MinValue = new OracleMonthSpan(MinMonth); // 4172 BC - 9999 AD * 12 months/year public static readonly OracleMonthSpan Null = new OracleMonthSpan(true); private const int NullValue = Int32.MaxValue; // Construct from nothing -- the value will be null internal OracleMonthSpan(bool isNull) { _value = NullValue; } // Construct from an integer number of months public OracleMonthSpan (int months) { _value = months; AssertValid(_value); } public OracleMonthSpan (Int32 years, Int32 months) { try { checked { _value = (years * 12) + months; } // Will assert below if invalid. } catch (System.OverflowException) { throw ADP.MonthOutOfRange(); } AssertValid(_value); } // Copy constructor public OracleMonthSpan (OracleMonthSpan from) { _value = from._value; } // (internal) construct from a row/parameter binding internal OracleMonthSpan (NativeBuffer buffer, int valueOffset) { _value = MarshalToInt32(buffer, valueOffset); } public bool IsNull { get { return (NullValue == _value); } } public int Value { get { if (IsNull) { throw ADP.DataIsNull(); } return _value; } } static private void AssertValid(int monthSpan) { if (monthSpan < MinMonth || monthSpan > MaxMonth) { throw ADP.MonthOutOfRange(); } } public int CompareTo(object obj) { if (obj.GetType() == typeof(OracleMonthSpan)) { OracleMonthSpan odt = (OracleMonthSpan)obj; // If both values are Null, consider them equal. // Otherwise, Null is less than anything. if (IsNull) { return odt.IsNull ? 0 : -1; } if (odt.IsNull) { return 1; } // Neither value is null, do the comparison. int result = _value.CompareTo(odt._value); return result; } throw ADP.WrongType(obj.GetType(), typeof(OracleMonthSpan)); } public override bool Equals(object value) { if (value is OracleMonthSpan) { return (this == (OracleMonthSpan)value).Value; } else { return false; } } public override int GetHashCode() { return IsNull ? 0 : _value.GetHashCode(); } static internal int MarshalToInt32( NativeBuffer buffer, int valueOffset) { byte[] ociValue = buffer.ReadBytes(valueOffset, 5); int years = (int)((long)( (int)ociValue[0] << 24 | (int)ociValue[1] << 16 | (int)ociValue[2] << 8 | (int)ociValue[3] ) - 0x80000000); int months = (int)ociValue[4] - 60; int result = (years * 12) + months; AssertValid(result); return result; } static internal int MarshalToNative(object value, NativeBuffer buffer, int offset) { int from; if ( value is OracleMonthSpan ) from = ((OracleMonthSpan)value)._value; else from = (int)value; byte[] ociValue = new byte[5]; int years = (int)((long)(from / 12) + 0x80000000); int months = from % 12; // DEVNOTE: undoubtedly, this is Intel byte order specific, but how // do I verify what Oracle needs on a non Intel machine? ociValue[0] = (byte)((years >> 24)); ociValue[1] = (byte)((years >> 16) & 0xff); ociValue[2] = (byte)((years >> 8) & 0xff); ociValue[3] = (byte)(years & 0xff); ociValue[4] = (byte)(months + 60); buffer.WriteBytes(offset, ociValue, 0, 5); return 5; } public static OracleMonthSpan Parse(string s) { int ms = Int32.Parse(s, CultureInfo.InvariantCulture); return new OracleMonthSpan(ms); } public override string ToString() { if (IsNull) { return ADP.NullString; } string retval = Value.ToString(CultureInfo.CurrentCulture); return retval; } public static OracleBoolean Equals(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator == return (x == y); } public static OracleBoolean GreaterThan(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator > return (x > y); } public static OracleBoolean GreaterThanOrEqual(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator >= return (x >= y); } public static OracleBoolean LessThan(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator < return (x < y); } public static OracleBoolean LessThanOrEqual(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator <= return (x <= y); } public static OracleBoolean NotEquals(OracleMonthSpan x, OracleMonthSpan y) { // Alternative method for operator != return (x != y); } public static explicit operator int(OracleMonthSpan x) { if (x.IsNull) { throw ADP.DataIsNull(); } return x.Value; } public static explicit operator OracleMonthSpan(string x) { return OracleMonthSpan.Parse(x); } public static OracleBoolean operator== (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) == 0); } public static OracleBoolean operator> (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) > 0); } public static OracleBoolean operator>= (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) >= 0); } public static OracleBoolean operator< (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) < 0); } public static OracleBoolean operator<= (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) <= 0); } public static OracleBoolean operator!= (OracleMonthSpan x, OracleMonthSpan y) { return (x.IsNull || y.IsNull) ? OracleBoolean.Null : new OracleBoolean(x.CompareTo(y) != 0); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Touch.cs
- Transform3DCollection.cs
- ProtocolsSection.cs
- StackOverflowException.cs
- TypeNameHelper.cs
- CellLabel.cs
- ImageAutomationPeer.cs
- InheritedPropertyChangedEventArgs.cs
- XPathExpr.cs
- XmlSchemaExternal.cs
- ColorContextHelper.cs
- DeclarativeCatalogPart.cs
- ApplicationFileParser.cs
- CurrentChangingEventManager.cs
- OutputScopeManager.cs
- Claim.cs
- BamlTreeMap.cs
- PeerInvitationResponse.cs
- LicFileLicenseProvider.cs
- Dictionary.cs
- AppDomainCompilerProxy.cs
- WorkflowInstanceExtensionCollection.cs
- DataViewListener.cs
- MarkerProperties.cs
- CLSCompliantAttribute.cs
- ToolStripDropDownButton.cs
- ExternalFile.cs
- BindingMAnagerBase.cs
- WsdlImporterElementCollection.cs
- SystemGatewayIPAddressInformation.cs
- DoubleCollectionConverter.cs
- HelpProvider.cs
- IntSecurity.cs
- XsdSchemaFileEditor.cs
- RegularExpressionValidator.cs
- SqlCommand.cs
- AuthorizationRule.cs
- ReadOnlyCollectionBase.cs
- JulianCalendar.cs
- ManipulationInertiaStartingEventArgs.cs
- GroupItem.cs
- UserControl.cs
- SqlCacheDependencySection.cs
- ObjectItemConventionAssemblyLoader.cs
- DataRecordInternal.cs
- glyphs.cs
- LocalizabilityAttribute.cs
- UriParserTemplates.cs
- TemplatedWizardStep.cs
- PrivilegeNotHeldException.cs
- ChannelPoolSettingsElement.cs
- AutomationPropertyInfo.cs
- SettingsPropertyValue.cs
- HeaderedContentControl.cs
- SerializationEventsCache.cs
- SystemIPInterfaceProperties.cs
- TableItemProviderWrapper.cs
- CultureSpecificStringDictionary.cs
- EntryIndex.cs
- FixedTextPointer.cs
- InfiniteTimeSpanConverter.cs
- SByteConverter.cs
- User.cs
- SqlClientFactory.cs
- ThemeDictionaryExtension.cs
- DocumentSequence.cs
- DataGridViewSelectedCellCollection.cs
- Conditional.cs
- AmbientLight.cs
- DependencyStoreSurrogate.cs
- QilStrConcatenator.cs
- QilIterator.cs
- SqlCacheDependencyDatabase.cs
- odbcmetadatacolumnnames.cs
- Brush.cs
- MessageParameterAttribute.cs
- LinearKeyFrames.cs
- ContextMenu.cs
- bidPrivateBase.cs
- BaseCodeDomTreeGenerator.cs
- MessageBox.cs
- UriSection.cs
- DiagnosticsConfiguration.cs
- SapiRecognizer.cs
- CategoryNameCollection.cs
- ToolStripMenuItem.cs
- InfoCardAsymmetricCrypto.cs
- FormatConvertedBitmap.cs
- DecimalConstantAttribute.cs
- HttpCapabilitiesSectionHandler.cs
- TextSearch.cs
- PropertyInformationCollection.cs
- RelationshipEntry.cs
- CodeTryCatchFinallyStatement.cs
- EditorOptionAttribute.cs
- ComNativeDescriptor.cs
- CoTaskMemSafeHandle.cs
- DBNull.cs
- WizardPanel.cs
- ListViewCommandEventArgs.cs