// // OracleMonthSpan.cs // // Part of the Mono class libraries at // mcs/class/System.Data.OracleClient/System.Data.OracleClient // // Assembly: System.Data.OracleClient.dll // Namespace: System.Data.OracleClient // // Author: Tim Coleman // // Copyright (C) Tim Coleman, 2003 // // Licensed under the MIT/X11 License. // using System; using System.Data.SqlTypes; namespace System.Data.OracleClient { public struct OracleMonthSpan : IComparable, INullable { #region Fields public static readonly OracleMonthSpan MaxValue = new OracleMonthSpan (176556); public static readonly OracleMonthSpan MinValue = new OracleMonthSpan (-176556); public static readonly OracleMonthSpan Null = new OracleMonthSpan (); bool notNull; int value; #endregion // Fields #region Constructors public OracleMonthSpan (int months) { value = months; notNull = true; } public OracleMonthSpan (OracleMonthSpan from) { this.notNull = from.notNull; this.value = from.value; } public OracleMonthSpan (int years, int months) : this (years * 12 + months) { } #endregion // Constructors #region Properties public bool IsNull { get { return !notNull; } } public int Value { get { if (IsNull) throw new Exception ("Data is null."); return value; } } #endregion // Properties #region Methods public int CompareTo (object obj) { OracleMonthSpan o = (OracleMonthSpan) obj; if (obj == null) throw new NullReferenceException ("Object reference not set to an instance of an object"); else if (!(obj is OracleMonthSpan)) throw new ArgumentException ("Value is not a System.Data.OracleClient.OracleMonthSpan", obj.ToString ()); else if (o.IsNull && this.IsNull) return 0; else if (o.IsNull && !(this.IsNull)) return 1; else return value.CompareTo (o.Value); } public override bool Equals (object value) { if (value is OracleMonthSpan) { OracleMonthSpan m = (OracleMonthSpan) value; return this.value == m.value; } return false; } public static OracleBoolean Equals (OracleMonthSpan x, OracleMonthSpan y) { if (x.IsNull || y.IsNull) return OracleBoolean.Null; return new OracleBoolean (x.Value == y.Value); } [MonoTODO] public override int GetHashCode () { throw new NotImplementedException (); } public static OracleBoolean GreaterThan (OracleMonthSpan x, OracleMonthSpan y) { if (x.IsNull || y.IsNull) return OracleBoolean.Null; return (x.value > y.value); } public static OracleBoolean GreaterThanOrEqual (OracleMonthSpan x, OracleMonthSpan y) { if (x.IsNull || y.IsNull) return OracleBoolean.Null; return (x.value >= y.value); } public static OracleBoolean LessThan (OracleMonthSpan x, OracleMonthSpan y) { if (x.IsNull || y.IsNull) return OracleBoolean.Null; return (x.value < y.value); } public static OracleBoolean LessThanOrEqual (OracleMonthSpan x, OracleMonthSpan y) { if (x.IsNull || y.IsNull) return OracleBoolean.Null; return (x.value <= y.value); } public static OracleBoolean NotEquals (OracleMonthSpan x, OracleMonthSpan y) { if (x.IsNull || y.IsNull) return OracleBoolean.Null; return (x.value != y.value); } public static OracleMonthSpan Parse (string s) { return new OracleMonthSpan (Int32.Parse (s)); } public override string ToString () { if (IsNull) return "Null"; return value.ToString (); } #endregion // Methods #region Operators and Type Conversions public static OracleBoolean operator == (OracleMonthSpan x, OracleMonthSpan y) { return Equals (x, y); } public static OracleBoolean operator > (OracleMonthSpan x, OracleMonthSpan y) { return GreaterThan (x, y); } public static OracleBoolean operator >= (OracleMonthSpan x, OracleMonthSpan y) { return GreaterThanOrEqual (x, y); } public static OracleBoolean operator != (OracleMonthSpan x, OracleMonthSpan y) { return NotEquals (x, y); } public static OracleBoolean operator < (OracleMonthSpan x, OracleMonthSpan y) { return LessThan (x, y); } public static OracleBoolean operator <= (OracleMonthSpan x, OracleMonthSpan y) { return LessThan (x, y); } public static explicit operator int (OracleMonthSpan x) { return x.value; } public static explicit operator OracleMonthSpan (string x) { return Parse (x); } #endregion // Operators and Type Conversions } }