summaryrefslogtreecommitdiffhomepage
path: root/src/timer-ns.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/timer-ns.cpp')
-rw-r--r--src/timer-ns.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/timer-ns.cpp b/src/timer-ns.cpp
index a6d1a073..45d0411c 100644
--- a/src/timer-ns.cpp
+++ b/src/timer-ns.cpp
@@ -56,6 +56,14 @@ Ns operator*(uint64_t a, const Ns& rhs)
return Ns{a} * b;
}
+Ns operator*(const Ns& lhs, float b_)
+{
+ long double a(lhs.stamp), b(b_);
+ auto x = a * b;
+ fm_assert(x <= 1 << 24 && x >= 0);
+ return Ns{uint64_t(x)};
+}
+
uint64_t operator/(const Ns& lhs, const Ns& rhs)
{
auto a = lhs.stamp, b = rhs.stamp;
@@ -96,6 +104,14 @@ std::strong_ordering operator<=>(const Ns& lhs, const Ns& rhs)
return a <=> b;
}
+Ns Ns::from_millis(uint64_t a)
+{
+ constexpr auto b = uint64_t(1e6);
+ const auto x = a * b;
+ fm_assert(a == 0 || x / a == b);
+ return Ns{x};
+};
+
Ns::operator uint64_t() const { return stamp; }
Ns::operator float() const { return float(stamp); }
uint64_t Ns::operator*() const { return stamp; }