13 typedef std::chrono::system_clock::time_point Time;
14 typedef int64_t Timestamp;
15 typedef std::chrono::duration<double> Seconds;
18 template <
class Duration>
19 constexpr int64_t numMicroseconds(Duration d) {
20 return std::chrono::duration_cast<std::chrono::microseconds>(d).count();
24 return std::chrono::system_clock::now();
30 constexpr Timestamp timestamp(Time time) {
31 return numMicroseconds(time.time_since_epoch());
34 inline Timestamp timestamp() {
return timestamp(now()); }
37 constexpr RJ::Timestamp SecsToTimestamp(
double secs) {
38 return secs * 1000000.0f;
41 template <
class Duration>
42 constexpr
double numSeconds(Duration d) {
43 return std::chrono::duration<double>(d).count();
47 constexpr
float TimestampToSecs(RJ::Timestamp timestamp) {
48 return (
float)(timestamp / 1000000.0f);
53 inline RJ::Time operator+(
const RJ::Time& time,
const RJ::Seconds& sec) {
54 return time + std::chrono::duration_cast<RJ::Time::duration>(sec);
57 inline RJ::Time operator-(
const RJ::Time& time,
const RJ::Seconds& sec) {
58 return time - std::chrono::duration_cast<RJ::Time::duration>(sec);
61 inline std::string to_string(RJ::Seconds seconds) {
62 return std::to_string(seconds.count()) +
"(Seconds)";
65 inline std::ostream& operator<<(std::ostream& os, RJ::Seconds seconds) {
66 os << to_string(seconds);