From a757f79945882cc0397f97b417c1e04e207edee7 Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Mon, 25 Mar 2024 22:19:00 +0100 Subject: [PATCH] Cleaned up time utilities --- src/bakatools/time/time.h | 78 +-------------------------------- src/bakatools/time/time_point.h | 48 ++++++++++++++++++++ src/bakatools/time/time_span.h | 40 +++++++++++++++++ 3 files changed, 90 insertions(+), 76 deletions(-) create mode 100644 src/bakatools/time/time_point.h create mode 100644 src/bakatools/time/time_span.h diff --git a/src/bakatools/time/time.h b/src/bakatools/time/time.h index 22948b9..7c18f36 100644 --- a/src/bakatools/time/time.h +++ b/src/bakatools/time/time.h @@ -1,78 +1,4 @@ #pragma once -#include - -namespace Bk::Tools { - using Nanosecond = std::ratio<1,1000000000>; - using Microsecond = std::ratio<1,1000000>; - using Millisecond = std::ratio<1,1000>; - using Second = std::ratio<1,1>; - using Minute = std::ratio<60, 1>; - using Hour = std::ratio<3600, 1>; - using Day = std::ratio<84600, 1>; - - using SysClock = std::chrono::system_clock; - using SteadyClock = std::chrono::steady_clock; - - template - struct TimeSpan - { - TimeSpan(int interval = 0) - : interval(std::chrono::duration(interval)) {} - TimeSpan(std::chrono::duration interval) - : interval(interval) {} - - template - TimeSpan get_as() - { - return TimeSpan(std::chrono::duration_cast>(interval)); - } - - int count() { return interval.count(); } - - TimeSpan

operator-(TimeSpan

& time_span) - { - return TimeSpan

(interval - time_span.interval); - } - - std::chrono::duration interval; - }; - - template - struct TimePoint - { - TimePoint() = default; - TimePoint(std::chrono::time_point point) - { - this->point = std::chrono::time_point_cast>(point); - } - - template - TimePoint get_as() - { - return TimePoint(std::chrono::time_point_cast>(point)); - } - - TimeSpan

elasped() - { - return TimeSpan

(point.time_since_epoch()); - } - - bool is_steady() - { - return C::is_steady; - } - - TimeSpan

operator-(TimePoint& tp) - { - return TimeSpan

(point - tp.point); - } - - static TimePoint now() - { - return TimePoint(C::now()); - } - - std::chrono::time_point> point; - }; -} \ No newline at end of file +#include

elasped() + { + return TimeSpan

(point.time_since_epoch()); + } + + bool is_steady() + { + return C::is_steady; + } + + TimeSpan

operator-(TimePoint& tp) + { + return TimeSpan

(point - tp.point); + } + + static TimePoint now() + { + return TimePoint(C::now()); + } + + std::chrono::time_point> point; +}; \ No newline at end of file diff --git a/src/bakatools/time/time_span.h b/src/bakatools/time/time_span.h new file mode 100644 index 0000000..966c2d4 --- /dev/null +++ b/src/bakatools/time/time_span.h @@ -0,0 +1,40 @@ +#pragma once + +#include + +using Nanosecond = std::ratio<1,1000000000>; +using Microsecond = std::ratio<1,1000000>; +using Millisecond = std::ratio<1,1000>; +using Second = std::ratio<1,1>; +using Minute = std::ratio<60, 1>; +using Hour = std::ratio<3600, 1>; +using Day = std::ratio<84600, 1>; + +using SysClock = std::chrono::system_clock; +using SteadyClock = std::chrono::steady_clock; +using FileClock = std::chrono::file_clock; +using UtcClock = std::chrono::utc_clock; + +template +struct TimeSpan +{ + TimeSpan(int interval = 0) + : interval(std::chrono::duration(interval)) {} + TimeSpan(std::chrono::duration interval) + : interval(interval) {} + + template + TimeSpan as_unit() + { + return TimeSpan(std::chrono::duration_cast>(interval)); + } + + int count() { return interval.count(); } + + TimeSpan

operator-(TimeSpan

& time_span) + { + return TimeSpan

(interval - time_span.interval); + } + + std::chrono::duration interval; +}; \ No newline at end of file