// // OciIntervalDescriptor.cs - used for an Oracle TIMESPAN/INTERVAL{YTM/DTS} // // Part of managed C#/.NET library System.Data.OracleClient.dll // // Part of the Mono class libraries at // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci // // Assembly: System.Data.OracleClient.dll // Namespace: System.Data.OracleClient.Oci // // Author: // Veerapuram Varadhan // // Copyright (C) Novell Inc, 2009 // using System; using System.Data; using System.Data.OracleClient; using System.Runtime.InteropServices; namespace System.Data.OracleClient.Oci { internal sealed class OciIntervalDescriptor : OciDescriptorHandle, IDisposable { #region Fields OciErrorHandle errorHandle; bool disposed = false; #endregion // Fields #region Constructors public OciIntervalDescriptor (OciHandle parent, OciHandleType type, IntPtr newHandle) : base (type, parent, newHandle) { } #endregion // Constructors #region Properties public OciErrorHandle ErrorHandle { get { return errorHandle; } set { errorHandle = value; } } #endregion // Properties #region Methods protected override void Dispose (bool disposing) { if (!disposed) { disposed = true; base.Dispose (disposing); } } public TimeSpan GetDayToSecond (OciHandle handle, OciErrorHandle errorHandle) { int days = 0; int hours = 0; int mins = 0; int secs = 0; int fsec = 0; int fs = 0; OciCalls.OCIIntervalGetDaySecond (handle, errorHandle, out days, out hours, out mins, out secs, out fsec, this.handle); if (fsec > 0) { int fseci = (int) fsec; fs = fseci / 1000000; } return new TimeSpan (days, hours, mins, secs, fs); } public int GetYearToMonth (OciHandle handle, OciErrorHandle errorHandle) { int years = 0; int months = 0; OciCalls.OCIIntervalGetYearMonth (handle, errorHandle, out years, out months, this.handle); return ((years * 12) + months); } #endregion // Methods } }