diff options
Diffstat (limited to '3rdparty/unittest-cpp/UnitTest++/Win32')
-rw-r--r-- | 3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.cpp | 49 | ||||
-rw-r--r-- | 3rdparty/unittest-cpp/UnitTest++/Win32/TimeHelpers.h | 45 |
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 |