]> git.tdb.fi Git - libs/core.git/blobdiff - source/time/timestamp.h
Drop copyright and license notices from source files
[libs/core.git] / source / time / timestamp.h
index 44387a216b46711a8f73280f54122b9e72990137..cb38279501ff7e0026aca3e1e23a890ab843fcea 100644 (file)
@@ -1,14 +1,8 @@
-/*
-This file is part of libmspcore     
-Copyright © 2006  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
 #ifndef MSP_TIME_TIMESTAMP_H_
 #define MSP_TIME_TIMESTAMP_H_
 
-#include <stdint.h>
 #include "timedelta.h"
-#include "types.h"
+#include "rawtime.h"
 
 namespace Msp {
 namespace Time {
@@ -21,6 +15,9 @@ For representing user-specified times, use the DateTime class.
 */
 class TimeStamp
 {
+private:
+       RawTime usec;
+
 public:
        /**
        Construct a TimeStamp that represents an arbitarily distant point in the
@@ -40,22 +37,29 @@ public:
        */
        RawTime raw() const { return usec; }
 
+       time_t to_unixtime() const { return usec/1000000LL; }
+
        TimeStamp operator+(const TimeDelta &t) const  { return TimeStamp(usec+t.raw()); }
        TimeStamp &operator+=(const TimeDelta &t)      { usec+=t.raw(); return *this; }
        TimeStamp operator-(const TimeDelta &t) const  { return TimeStamp(usec-t.raw()); }
        TimeStamp &operator-=(const TimeDelta &t)      { usec-=t.raw(); return *this; }
        TimeDelta operator-(const TimeStamp &t) const  { return TimeDelta(usec-t.usec); }
+
        bool      operator>=(const TimeStamp &t) const { return usec>=t.usec; }
        bool      operator>(const TimeStamp &t) const  { return usec>t.usec; }
        bool      operator<=(const TimeStamp &t) const { return usec<=t.usec; }
        bool      operator<(const TimeStamp &t) const  { return usec<t.usec; }
        bool      operator==(const TimeStamp &t) const { return usec==t.usec; }
        bool      operator!=(const TimeStamp &t) const { return usec!=t.usec; }
-       operator bool() const                          { return usec>0; }
+
+       operator const void *() const                  { return usec>0 ? this : 0; }
+
+#ifndef WIN32
+       operator timeval() const { return rawtime_to_timeval(usec); }
+       operator timespec() const { return rawtime_to_timespec(usec); }
+#endif
 
        static TimeStamp from_unixtime(time_t t) { return TimeStamp(t*1000000LL); }
-private:
-       RawTime usec;
 };
 
 } // namespace Time