5#include "structure/design_pattern/spk_cached_data.hpp"
6#include "type/spk_time_unit.hpp"
17 TimeUnit _unit = TimeUnit::Millisecond;
18 std::variant<double, long long> _value;
24 long long _generateNanoseconds()
const;
25 long long _generateMilliseconds()
const;
26 double _generateSeconds()
const;
28 void _resetCaches()
const;
41 Duration(
long double p_value, TimeUnit p_unit);
152 Duration operator""_s(
long double p_value);
153 Duration operator""_s(
unsigned long long p_value);
154 Duration operator""_ms(
unsigned long long p_value);
155 Duration operator""_ns(
unsigned long long p_value);
Lazily generates and caches a value with optional custom destructor.
Definition spk_cached_data.hpp:26
Strongly-typed time span with cached conversions between ns/ms/s.
Definition spk_duration.hpp:15
Duration & operator-=(const Duration &p_o)
Subtracts another duration from this instance.
Definition spk_duration.cpp:209
long long nanoseconds() const
Returns the duration in nanoseconds.
Definition spk_duration.cpp:161
bool operator==(const Duration &p_o) const
Equality comparison using canonical nanoseconds.
Definition spk_duration.cpp:218
bool operator>=(const Duration &p_o) const
Greater-or-equal comparison using canonical nanoseconds.
Definition spk_duration.cpp:243
bool operator!=(const Duration &p_o) const
Inequality comparison using canonical nanoseconds.
Definition spk_duration.cpp:223
Duration()
Constructs a zero duration (milliseconds by default).
Definition spk_duration.cpp:70
Duration & operator=(const Duration &p_other)
Copies duration value and unit from another instance.
Definition spk_duration.cpp:135
bool operator<=(const Duration &p_o) const
Less-or-equal comparison using canonical nanoseconds.
Definition spk_duration.cpp:238
double seconds() const
Returns the duration in seconds.
Definition spk_duration.cpp:171
Duration operator+(const Duration &p_o) const
Adds two durations.
Definition spk_duration.cpp:190
Duration operator-() const
Unary minus producing the symmetric duration.
Definition spk_duration.cpp:176
bool operator<(const Duration &p_o) const
Strictly-less comparison using canonical nanoseconds.
Definition spk_duration.cpp:228
long long milliseconds() const
Returns the duration in milliseconds.
Definition spk_duration.cpp:166
bool operator>(const Duration &p_o) const
Strictly-greater comparison using canonical nanoseconds.
Definition spk_duration.cpp:233
Duration & operator+=(const Duration &p_o)
Adds another duration to this instance.
Definition spk_duration.cpp:200