summaryrefslogtreecommitdiff
path: root/include/mbgl/util/chrono.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/util/chrono.hpp')
-rw-r--r--include/mbgl/util/chrono.hpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/mbgl/util/chrono.hpp b/include/mbgl/util/chrono.hpp
index df8c5e6234..9c99c7bcdf 100644
--- a/include/mbgl/util/chrono.hpp
+++ b/include/mbgl/util/chrono.hpp
@@ -8,9 +8,40 @@ namespace mbgl {
using Clock = std::chrono::steady_clock;
using SystemClock = std::chrono::system_clock;
+using Seconds = std::chrono::seconds;
+using Milliseconds = std::chrono::milliseconds;
+
using TimePoint = Clock::time_point;
using Duration = Clock::duration;
+using SystemTimePoint = SystemClock::time_point;
+using SystemDuration = SystemClock::duration;
+
+template <class _Clock, class _Duration>
+_Duration toDuration(std::chrono::time_point<_Clock, _Duration> time_point) {
+ return time_point.time_since_epoch();
+}
+
+template <class _Duration>
+Seconds asSeconds(_Duration duration) {
+ return std::chrono::duration_cast<Seconds>(duration);
+}
+
+template <class _Clock, class _Duration>
+Seconds toSeconds(std::chrono::time_point<_Clock, _Duration> time_point) {
+ return asSeconds(toDuration<_Clock, _Duration>(time_point));
+}
+
+template <class _Duration>
+Milliseconds asMilliseconds(_Duration duration) {
+ return std::chrono::duration_cast<Milliseconds>(duration);
+}
+
+template <class _Clock, class _Duration>
+Milliseconds toMilliseconds(std::chrono::time_point<_Clock, _Duration> time_point) {
+ return asMilliseconds(toDuration<_Clock, _Duration>(time_point));
+}
+
}
#endif