--- /dev/null
+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 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