Win32-compatibility
authorMikko Rasa <tdb@tdb.fi>
Tue, 5 Sep 2006 20:24:43 +0000 (20:24 +0000)
committerMikko Rasa <tdb@tdb.fi>
Tue, 5 Sep 2006 20:24:43 +0000 (20:24 +0000)
source/time/utils.cpp

index 00c389d93acd4d8ae55edf14d3cd042e420e7da1..49acd7791180616be36d56f29f0af99a30a55e42 100644 (file)
@@ -3,8 +3,12 @@ This file is part of libmspframework
 Copyright © 2006  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
+#ifdef WIN32
+#include <windows.h>
+#else
 #include <sys/resource.h>
 #include <sys/time.h>
+#endif
 #include "timedelta.h"
 #include "timestamp.h"
 #include "units.h"
@@ -18,9 +22,32 @@ Returns the current timestamp.
 */
 TimeStamp now()
 {
+#ifndef WIN32
        timeval tv;
        gettimeofday(&tv, 0);
        return TimeStamp(tv.tv_sec*1000000LL+tv.tv_usec);
+#else
+       static int64_t epoch=0;
+       if(!epoch)
+       {
+               SYSTEMTIME st;
+               st.wYear=1970;
+               st.wMonth=1;
+               st.wDay=1;
+               st.wHour=0;
+               st.wMinute=0;
+               st.wSecond=0;
+               st.wMilliseconds=0;
+
+               FILETIME ft;
+               SystemTimeToFileTime(&st, &ft);
+               epoch=(ft.dwLowDateTime+(int64_t)ft.dwHighDateTime<<32)/10;
+       }
+       
+       FILETIME ft;
+       GetSystemTimeAsFileTime(&ft);
+       return TimeStamp((ft.dwLowDateTime+(int64_t)ft.dwHighDateTime<<32)/10-epoch);
+#endif
 }
 
 /**
@@ -28,9 +55,14 @@ Returns the CPU time used by the program so far.
 */
 TimeDelta get_cpu_time()
 {
+#ifndef WIN32
        rusage ru;
        getrusage(RUSAGE_SELF, &ru);
        return (ru.ru_utime.tv_sec+ru.ru_stime.tv_sec)*sec + (ru.ru_utime.tv_usec+ru.ru_stime.tv_usec)*usec;
+#else
+       //XXX Figure out the function to use on Win32
+       return TimeDelta();
+#endif
 }
 
 /**