Cosmos/source/BaseTest/TimeSpanImpl.cs

279 lines
No EOL
6.8 KiB
C#

using System;
using Cosmos.IL2CPU.Plugs;
[Plug(Target = typeof(System.TimeSpan))]
class TimeSpanImpl
{
#region Static Methods
static public TimeSpanImpl Parse(String str)
{
//TODO Implement
return new TimeSpanImpl(0);
}
static public Boolean TryParse(String str, out TimeSpanImpl ris)
{
//TODO Implement
ris = new TimeSpanImpl(0);
return false;
}
static public Boolean Equals(TimeSpanImpl tm1, TimeSpanImpl tm2)
{
return tm1.Equals(tm2);
}
static public Int32 Compare(TimeSpanImpl tm1, TimeSpanImpl tm2)
{
return tm1.CompareTo(tm2);
}
static public TimeSpanImpl FromDays(Double Days)
{
return new TimeSpanImpl((long)(Days * TicksPerDay));
}
static public TimeSpanImpl FromHours(Double Hours)
{
return new TimeSpanImpl((long)(Hours * TicksPerHour));
}
static public TimeSpanImpl FromMinutes(Double Minutes)
{
return new TimeSpanImpl((long)(Minutes * TicksPerMinute));
}
static public TimeSpanImpl FromSeconds(Double Seconds)
{
return new TimeSpanImpl((long)(Seconds * TicksPerSecond));
}
static public TimeSpanImpl FromMilliseconds(Double Milliseconds)
{
return new TimeSpanImpl((long)(Milliseconds * TicksPerMillisecond));
}
static public TimeSpanImpl FromTicks(long Ticks)
{
return new TimeSpanImpl(Ticks);
}
#endregion
#region Costants
public const long TicksPerDay = 864000000000;
public const long TicksPerHour = 36000000000;
public const long TicksPerMinute = 600000000;
public const long TicksPerSecond = 10000000;
public const long TicksPerMillisecond = 10000;
public const long MaxValue = Int64.MaxValue;
public const long MinValue = Int64.MinValue;
#endregion
#region Operators
public static TimeSpanImpl operator +(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return tm.Add(tm2);
}
public static TimeSpanImpl operator -(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return tm.Substract(tm2);
}
public static Boolean operator >(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return (tm.Ticks > tm2.Ticks);
}
public static Boolean operator >=(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return (tm.Ticks >= tm2.Ticks);
}
public static Boolean operator <(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return (tm.Ticks < tm2.Ticks);
}
public static Boolean operator <=(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return (tm.Ticks <= tm2.Ticks);
}
public static Boolean operator ==(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return (tm.Ticks == tm2.Ticks);
}
public static Boolean operator !=(TimeSpanImpl tm, TimeSpanImpl tm2)
{
return (tm.Ticks != tm2.Ticks);
}
public static TimeSpanImpl operator !(TimeSpanImpl tm)
{
return tm.Negate();
}
public static TimeSpanImpl operator +(TimeSpanImpl tm)
{
return tm;
}
#endregion
#region Methods
public TimeSpanImpl Add(TimeSpanImpl tm)
{
return new TimeSpanImpl(Ticks + tm.Ticks);
}
public TimeSpanImpl Substract(TimeSpanImpl tm)
{
return new TimeSpanImpl(Ticks - tm.Ticks);
}
public TimeSpanImpl Negate()
{
long it = Ticks - Ticks - Ticks;
return new TimeSpanImpl(it);
}
public TimeSpanImpl Duration()
{
if (Ticks < 0)
return Negate();
else
return new TimeSpanImpl(Ticks);
}
public bool Equals(TimeSpanImpl tm)
{
//TODO Implement
return false;
}
public Int32 CompareTo(TimeSpanImpl tm2)
{
//TODO Implement
return -1;
}
public override String ToString()
{
//TODO Implement
return "";
}
public override bool Equals(object obj)
{
//TODO Implement
return base.Equals(obj);
}
public override int GetHashCode()
{
//TODO Implement
return base.GetHashCode();
}
#endregion
#region Costructors
public TimeSpanImpl()
{
Ticks = 0;
}
public TimeSpanImpl(long Ticks)
{
this.Ticks = Ticks;
}
public TimeSpanImpl(Int32 Hours, Int32 Minutes, Int32 Seconds)
{
this.Ticks = (Hours * 36000000000) + (Minutes * 600000000) + (Seconds * 10000000);
}
public TimeSpanImpl(Int32 Days, Int32 Hours, Int32 Minutes, Int32 Seconds)
{
this.Ticks = (Days * 864000000000) + (Hours * 36000000000) + (Minutes * 600000000) + (Seconds * 10000000);
}
public TimeSpanImpl(Int32 Days, Int32 Hours, Int32 Minutes, Int32 Seconds, Int32 Milliseconds)
{
this.Ticks = (Days * 864000000000) + (Hours * 36000000000) + (Minutes * 600000000) + (Seconds * 10000000) + (Milliseconds * 10000);
}
#endregion
#region Fields
public Int32 Milliseconds
{
get
{
Double temp = (Ticks - (Days * TicksPerDay) - (Hours * TicksPerHour) - (Minutes * TicksPerMinute) - (Seconds * TicksPerSecond));
return (Int32)(temp / TicksPerMillisecond);
}
}
public Int32 Seconds
{
get
{
Double temp = (Ticks - (Days * TicksPerDay) - (Hours * TicksPerHour) - (Minutes * TicksPerMinute));
return (Int32)(temp / TicksPerSecond);
}
}
public Int32 Minutes
{
get
{
Double temp = (Ticks - (Days * TicksPerDay) - (Hours * TicksPerHour));
return (Int32)(temp / TicksPerMinute);
}
}
public Int32 Hours
{
get
{
Double temp = (Ticks - (Days * TicksPerDay));
return (Int32)(temp / TicksPerHour);
}
}
public Int32 Days
{
get
{
return (Int32)(Ticks / TicksPerDay);
}
}
public Double TotalMilliseconds
{
get
{
return (Ticks / TicksPerMillisecond);
}
}
public Double TotalSeconds
{
get
{
return (Ticks / TicksPerSecond);
}
}
public Double TotalMinutes
{
get
{
return (Ticks / TicksPerMinute);
}
}
public Double TotalHours
{
get
{
return (Ticks / TicksPerHour);
}
}
public Double TotalDays
{
get
{
return (Double)(Ticks / TicksPerDay);
}
}
public long Ticks { get; private set; }
public TimeSpanImpl Zero
{
get { return new TimeSpanImpl(0); }
}
#endregion
}