Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MetadataAssemblyHelper.cs
- XPathNodeInfoAtom.cs
- GenericParameterDataContract.cs
- FlowDocument.cs
- BamlLocalizer.cs
- XamlHostingSectionGroup.cs
- EventLogRecord.cs
- PointAnimationBase.cs
- DataGridViewRowPrePaintEventArgs.cs
- KnownBoxes.cs
- SimpleRecyclingCache.cs
- Win32SafeHandles.cs
- MDIClient.cs
- CodeDelegateCreateExpression.cs
- HttpHandlersSection.cs
- NotFiniteNumberException.cs
- ListChunk.cs
- ClientScriptManager.cs
- CursorConverter.cs
- SslStreamSecurityUpgradeProvider.cs
- VirtualPath.cs
- RegexGroupCollection.cs
- CaseInsensitiveComparer.cs
- SectionRecord.cs
- RecordBuilder.cs
- WebPartDescriptionCollection.cs
- TitleStyle.cs
- FloatUtil.cs
- XmlAttributeProperties.cs
- StringKeyFrameCollection.cs
- DataBinder.cs
- PropertyEmitter.cs
- AssemblyAttributesGoHere.cs
- FontDriver.cs
- ChtmlTextWriter.cs
- DoWorkEventArgs.cs
- CqlBlock.cs
- FixUp.cs
- HandlerBase.cs
- MultilineStringConverter.cs
- HierarchicalDataBoundControlAdapter.cs
- QilStrConcatenator.cs
- SourceItem.cs
- XsdCachingReader.cs
- CustomValidator.cs
- CodeAttributeDeclarationCollection.cs
- Label.cs
- IpcServerChannel.cs
- PackageDigitalSignature.cs
- SQLByteStorage.cs
- ConvertEvent.cs
- DrawingCollection.cs
- SynchronizedCollection.cs
- _ListenerRequestStream.cs
- HttpCookie.cs
- Base64Encoder.cs
- UrlMappingsModule.cs
- ButtonStandardAdapter.cs
- IdentityHolder.cs
- TableCellCollection.cs
- DispatcherProcessingDisabled.cs
- InvalidPropValue.cs
- VisualStyleTypesAndProperties.cs
- BrowsableAttribute.cs
- FixedDocument.cs
- ListItemConverter.cs
- TreeBuilder.cs
- XmlSchemaInfo.cs
- BitStream.cs
- _LoggingObject.cs
- GeneralTransform3D.cs
- JournalEntry.cs
- SearchForVirtualItemEventArgs.cs
- _ShellExpression.cs
- PointLight.cs
- CommandLibraryHelper.cs
- XmlElementList.cs
- SessionStateContainer.cs
- RepeaterItemEventArgs.cs
- SyndicationDeserializer.cs
- DebugTrace.cs
- BidOverLoads.cs
- CellTreeSimplifier.cs
- IERequestCache.cs
- securitycriticaldataformultiplegetandset.cs
- XamlToRtfWriter.cs
- CodeCompiler.cs
- ParserExtension.cs
- ListItemConverter.cs
- WhitespaceRuleReader.cs
- ContentFileHelper.cs
- CodeVariableReferenceExpression.cs
- NativeMethods.cs
- PropertyPathConverter.cs
- MulticastOption.cs
- TreeView.cs
- UserInitiatedRoutedEventPermission.cs
- RegexInterpreter.cs
- DecoderFallback.cs
- HttpContextWrapper.cs