light/modules/time/timer.cppm

46 lines
799 B
Text
Raw Normal View History

export module time;
2025-11-18 19:06:44 +03:30
import lsd;
2025-07-05 13:28:41 +03:30
namespace lt::time {
2025-07-05 13:28:41 +03:30
2025-07-15 15:53:30 +03:30
/** Simple timer class to keep track of the elapsed time. */
export class Timer
2025-07-05 13:28:41 +03:30
{
public:
2025-11-18 19:06:44 +03:30
using Clock = lsd::chrono::steady_clock;
2025-07-05 13:28:41 +03:30
2025-11-18 19:06:44 +03:30
using Duration = lsd::chrono::duration<f64>;
2025-07-15 15:53:30 +03:30
2025-11-18 19:06:44 +03:30
using Timepoint = lsd::chrono::time_point<lsd::chrono::steady_clock>;
2025-07-15 15:53:30 +03:30
Timer(Timepoint start = Clock::now());
2025-07-07 15:13:05 +03:30
void reset(Timepoint start = Clock::now());
2025-07-05 13:28:41 +03:30
[[nodiscard]] auto elapsed_time() const -> Duration;
2025-07-05 16:07:51 +03:30
private:
Timepoint m_start;
2025-07-05 13:28:41 +03:30
};
} // namespace lt::time
module :private;
namespace lt::time {
Timer::Timer(Timepoint start): m_start(start)
{
}
void Timer::reset(Timepoint start)
{
m_start = start;
}
[[nodiscard]] auto Timer::elapsed_time() const -> Duration
{
2025-11-18 19:06:44 +03:30
return { lsd::chrono::steady_clock::now() - m_start };
}
} // namespace lt::time