#pragma once #include #include "Util.hpp" SDLU_BEGIN class Time { public: Time(); template> Rep AsValue() const; float AsSeconds() const; Int32 AsMilliseconds() const; Int64 AsMicroseconds() const; template Duration AsChrono() const; std::chrono::seconds AsChronoSeconds() const; std::chrono::milliseconds AsChronoMilliseconds() const; std::chrono::microseconds AsChronoMicroseconds() const; friend Time Seconds(float seconds); friend Time Milliseconds(Int32 milliseconds); friend Time Microseconds(Int64 microseconds); private: std::chrono::duration microseconds; }; template inline Rep Time::AsValue() const { return std::chrono::duration_cast>(microseconds).count(); } template inline Duration Time::AsChrono() const { return std::chrono::duration_cast(microseconds); } SDLU_END