#include <Time/HighResolutionClock.h>

#if defined(GAME_WIN32)

#include <Windows.h>

namespace GameTime
{
  namespace
  {
    const uint64_t g_Frequency = []() -> uint64_t
    {
      LARGE_INTEGER frequency;
      QueryPerformanceFrequency(&frequency);
      return frequency.QuadPart;
    }();
  }

  HighResClock::time_point HighResClock::now()
  {
    LARGE_INTEGER count;
    QueryPerformanceCounter(&count);
    return time_point(duration(count.QuadPart * static_cast<rep>(period::den) / g_Frequency));
  }
}
#endif
