X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=inline;f=dev5%2Fpsychlops%2Fcore%2Fdevices%2Fclock.cs;fp=dev5%2Fpsychlops%2Fcore%2Fdevices%2Fclock.cs;h=f4a3ebfee9d8525903a2bd4c86add6645c9cfd13;hb=08bcb090f6a3e6ee38c712571f24b57a4dd32fb4;hp=0000000000000000000000000000000000000000;hpb=7fe25aa821826f09903fb14def74d6b0376e3b5a;p=psychlops%2Fsilverlight.git diff --git a/dev5/psychlops/core/devices/clock.cs b/dev5/psychlops/core/devices/clock.cs new file mode 100644 index 0000000..f4a3ebf --- /dev/null +++ b/dev5/psychlops/core/devices/clock.cs @@ -0,0 +1,64 @@ +using System; + +namespace Psychlops +{ + + public struct Clock + { + long ticks; + // where ticks unit is 100 nano seconds. + + public void update() + { + ticks = DateTime.Now.Ticks; + } + public long at_msec() + { + return ticks/10000; + } + + public static Clock operator +(Clock lhs, Clock rhs) + { + return new Clock { ticks = lhs.ticks + rhs.ticks }; + } + public static Clock operator -(Clock lhs, Clock rhs) + { + return new Clock { ticks = lhs.ticks - rhs.ticks }; + } + + public static bool operator ==(Clock lhs, Clock rhs) + { + return lhs.ticks == rhs.ticks; + } + public static bool operator !=(Clock lhs, Clock rhs) + { + return lhs.ticks != rhs.ticks; + } + public override int GetHashCode() + { + return ticks.GetHashCode(); + } + public static bool operator >(Clock lhs, Clock rhs) + { + return lhs.ticks > rhs.ticks; + } + public static bool operator <(Clock lhs, Clock rhs) + { + return lhs.ticks < rhs.ticks; + } + public static bool operator >=(Clock lhs, Clock rhs) + { + return lhs.ticks >= rhs.ticks; + } + public static bool operator <=(Clock lhs, Clock rhs) + { + return lhs.ticks <= rhs.ticks; + } + + public override string ToString() + { + return ticks.ToString(); + } + } + +}