OSDN Git Service

5
[psychlops/silverlight.git] / dev5 / psychlops / core / devices / clock.cs
diff --git a/dev5/psychlops/core/devices/clock.cs b/dev5/psychlops/core/devices/clock.cs
new file mode 100644 (file)
index 0000000..f4a3ebf
--- /dev/null
@@ -0,0 +1,64 @@
+using System;\r
+\r
+namespace Psychlops\r
+{\r
+\r
+       public struct Clock\r
+       {\r
+               long ticks;\r
+               // where ticks unit is 100 nano seconds.\r
+\r
+               public void update()\r
+               {\r
+                       ticks = DateTime.Now.Ticks;\r
+               }\r
+               public long at_msec()\r
+               {\r
+                       return ticks/10000;\r
+               }\r
+\r
+               public static Clock operator +(Clock lhs, Clock rhs)\r
+               {\r
+                       return new Clock { ticks = lhs.ticks + rhs.ticks };\r
+               }\r
+               public static Clock operator -(Clock lhs, Clock rhs)\r
+               {\r
+                       return new Clock { ticks = lhs.ticks - rhs.ticks };\r
+               }\r
+\r
+               public static bool operator ==(Clock lhs, Clock rhs)\r
+               {\r
+                       return lhs.ticks == rhs.ticks;\r
+               }\r
+               public static bool operator !=(Clock lhs, Clock rhs)\r
+               {\r
+                       return lhs.ticks != rhs.ticks;\r
+               }\r
+               public override int GetHashCode()\r
+               {\r
+                       return ticks.GetHashCode();\r
+               }\r
+               public static bool operator >(Clock lhs, Clock rhs)\r
+               {\r
+                       return lhs.ticks > rhs.ticks;\r
+               }\r
+               public static bool operator <(Clock lhs, Clock rhs)\r
+               {\r
+                       return lhs.ticks < rhs.ticks;\r
+               }\r
+               public static bool operator >=(Clock lhs, Clock rhs)\r
+               {\r
+                       return lhs.ticks >= rhs.ticks;\r
+               }\r
+               public static bool operator <=(Clock lhs, Clock rhs)\r
+               {\r
+                       return lhs.ticks <= rhs.ticks;\r
+               }\r
+\r
+               public override string ToString()\r
+               {\r
+                       return ticks.ToString();\r
+               }\r
+       }\r
+\r
+}\r