summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/UnitTest++/Win32
diff options
context:
space:
mode:
author ImJezze <jezze@gmx.net>2015-05-30 14:57:13 +0200
committer ImJezze <jezze@gmx.net>2015-05-30 14:57:13 +0200
commitd1d9dfc2d4be85cee8c8c990950d72ee6df78e5e (patch)
tree495d4e5a066ee13be131f08437732b3588d43a42 /3rdparty/unittest-cpp/UnitTest++/Win32
parentfe71f92dd24270ae7c5621166b096c665ca0e4f5 (diff)
parent51709eef04f9f0c6d621447c568e170927fa9472 (diff)
Merge pull request #4 from mamedev/master
Sync to base master
Diffstat (limited to '3rdparty/unittest-cpp/UnitTest++/Win32')
-rw-r--r--3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.cpp49
-rw-r--r--3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.h45
2 files changed, 94 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.cpp b/3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.cpp
new file mode 100644
index 00000000000..aa97b892b60
--- /dev/null
+++ b/3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.cpp
@@ -0,0 +1,49 @@
+#include "TimeHelpers.h"
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+namespace UnitTest {
+
+Timer::Timer()
+ : m_threadHandle(::GetCurrentThread())
+ , m_startTime(0)
+{
+#if defined(UNITTEST_WIN32) && (_MSC_VER == 1200) // VC6 doesn't have DWORD_PTR
+ typedef unsigned long DWORD_PTR;
+#endif
+
+ DWORD_PTR systemMask;
+ ::GetProcessAffinityMask(GetCurrentProcess(), &m_processAffinityMask, &systemMask);
+ ::SetThreadAffinityMask(m_threadHandle, 1);
+ ::QueryPerformanceFrequency(reinterpret_cast< LARGE_INTEGER* >(&m_frequency));
+ ::SetThreadAffinityMask(m_threadHandle, m_processAffinityMask);
+}
+
+void Timer::Start()
+{
+ m_startTime = GetTime();
+}
+
+double Timer::GetTimeInMs() const
+{
+ __int64 const elapsedTime = GetTime() - m_startTime;
+ double const seconds = double(elapsedTime) / double(m_frequency);
+ return seconds * 1000.0;
+}
+
+__int64 Timer::GetTime() const
+{
+ LARGE_INTEGER curTime;
+ ::SetThreadAffinityMask(m_threadHandle, 1);
+ ::QueryPerformanceCounter(&curTime);
+ ::SetThreadAffinityMask(m_threadHandle, m_processAffinityMask);
+ return curTime.QuadPart;
+}
+
+void TimeHelpers::SleepMs(int ms)
+{
+ ::Sleep(ms);
+}
+
+}
diff --git a/3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.h b/3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.h
new file mode 100644
index 00000000000..2bbe75f81f0
--- /dev/null
+++ b/3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.h
@@ -0,0 +1,45 @@
+#ifndef UNITTEST_TIMEHELPERS_H
+#define UNITTEST_TIMEHELPERS_H
+
+#include "../Config.h"
+#include "../HelperMacros.h"
+
+#ifdef UNITTEST_MINGW
+ #ifndef __int64
+ #define __int64 long long
+ #endif
+#endif
+
+namespace UnitTest {
+
+class UNITTEST_LINKAGE Timer
+{
+public:
+ Timer();
+ void Start();
+ double GetTimeInMs() const;
+
+private:
+ __int64 GetTime() const;
+
+ void* m_threadHandle;
+
+#if defined(_WIN64)
+ unsigned __int64 m_processAffinityMask;
+#else
+ unsigned long m_processAffinityMask;
+#endif
+
+ __int64 m_startTime;
+ __int64 m_frequency;
+};
+
+
+namespace TimeHelpers
+{
+ UNITTEST_LINKAGE void SleepMs(int ms);
+}
+
+}
+
+#endif