#pragma once // ------------------------------------------------------------------------------------------------ #include "Library/Chrono.hpp" // ------------------------------------------------------------------------------------------------ namespace SqMod { /* ------------------------------------------------------------------------------------------------ * */ class Timer { /* -------------------------------------------------------------------------------------------- * */ explicit Timer(int64_t t) : m_Timestamp(t) { /* ... */ } public: /* -------------------------------------------------------------------------------------------- * */ Timer(); /* -------------------------------------------------------------------------------------------- * */ Timer(const Timer & o) = default; /* -------------------------------------------------------------------------------------------- * */ ~Timer() = default; /* -------------------------------------------------------------------------------------------- * */ Timer & operator = (const Timer o) { m_Timestamp = o.m_Timestamp; return *this; } /* -------------------------------------------------------------------------------------------- * ... */ SQMOD_NODISCARD int32_t Cmp(const Timer & b) const; /* -------------------------------------------------------------------------------------------- * ... */ SQMOD_NODISCARD String ToString() const; /* -------------------------------------------------------------------------------------------- * */ void Reset(); /* -------------------------------------------------------------------------------------------- * */ Timestamp Restart(); /* -------------------------------------------------------------------------------------------- * */ int64_t RestartRaw(); /* -------------------------------------------------------------------------------------------- * */ SQMOD_NODISCARD Timestamp GetElapsedTime() const; /* -------------------------------------------------------------------------------------------- * */ SQMOD_NODISCARD int64_t GetElapsedTimeRaw() const; private: // -------------------------------------------------------------------------------------------- int64_t m_Timestamp; }; } // Namespace:: SqMod