2021-06-27 21:25:29 +00:00
|
|
|
/***
|
|
|
|
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
|
|
|
|
|
|
|
File: Time.hpp
|
|
|
|
Date: 2021-6-17
|
|
|
|
Author: Reece
|
|
|
|
***/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
namespace Aurora::Time
|
|
|
|
{
|
|
|
|
#if defined(AURORA_PLATFORM_WIN32)
|
|
|
|
|
|
|
|
static inline AuSInt ConvertTimestamp(const FILETIME &ft)
|
|
|
|
{
|
|
|
|
ULARGE_INTEGER ull;
|
|
|
|
ull.LowPart = ft.dwLowDateTime;
|
|
|
|
ull.HighPart = ft.dwHighDateTime;
|
2022-01-29 11:49:11 +00:00
|
|
|
return ull.QuadPart / 10000ULL - 12'643'553'700'000ULL;
|
2021-06-27 21:25:29 +00:00
|
|
|
}
|
|
|
|
|
2021-10-03 12:43:37 +00:00
|
|
|
|
2021-09-06 10:58:08 +00:00
|
|
|
#elif defined(AURORA_IS_POSIX_DERIVED)
|
2021-06-27 21:25:29 +00:00
|
|
|
|
|
|
|
static inline AuUInt32 ConvertUnixTimespecToMs(const struct timespec &spec)
|
|
|
|
{
|
|
|
|
return ConvertUnixToAuroraMS(spec.tv_sec * 1000ULL + spec.tv_nsec / 1000000ULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void ms2ts(struct timespec *ts, unsigned long ms)
|
|
|
|
{
|
|
|
|
ts->tv_sec = ms / 1000;
|
|
|
|
ts->tv_nsec = (ms % 1000) * 1000000;
|
|
|
|
}
|
|
|
|
|
2021-10-03 12:43:37 +00:00
|
|
|
static void ms2tsabs(struct timespec *ts, unsigned long ms)
|
|
|
|
{
|
|
|
|
ms += ConvertAuroraToUnixMS(CurrentClockMS());
|
|
|
|
ts->tv_sec = ms / 1000;
|
|
|
|
ts->tv_nsec = (ms % 1000) * 1000000;
|
|
|
|
}
|
|
|
|
|
2021-06-27 21:25:29 +00:00
|
|
|
#endif
|
|
|
|
}
|