libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
duration.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <chrono>
11#include <cstdint>
13
15
16class String;
17
26class Duration {
27 public:
34 return Duration(std::chrono::duration_cast<std::chrono::nanoseconds>(
35 std::chrono::hours(h)));
36 }
37
44 return Duration(std::chrono::duration_cast<std::chrono::nanoseconds>(
45 std::chrono::minutes(m)));
46 }
47
54 return Duration(std::chrono::duration_cast<std::chrono::nanoseconds>(
55 std::chrono::seconds(s)));
56 }
57
64 return Duration(std::chrono::duration_cast<std::chrono::nanoseconds>(
65 std::chrono::milliseconds(ms)));
66 }
67
74 return Duration(std::chrono::duration_cast<std::chrono::nanoseconds>(
75 std::chrono::microseconds(us)));
76 }
77
84 return Duration(std::chrono::nanoseconds(ns));
85 }
86
88 Duration() : _ns(0) {}
89
94 int64_t hours() const {
95 return std::chrono::duration_cast<std::chrono::hours>(_ns).count();
96 }
97
102 int64_t minutes() const {
103 return std::chrono::duration_cast<std::chrono::minutes>(_ns).count();
104 }
105
110 int64_t seconds() const {
111 return std::chrono::duration_cast<std::chrono::seconds>(_ns).count();
112 }
113
119 return std::chrono::duration_cast<std::chrono::milliseconds>(_ns).count();
120 }
121
127 return std::chrono::duration_cast<std::chrono::microseconds>(_ns).count();
128 }
129
135 return _ns.count();
136 }
137
142 double toSecondsDouble() const {
143 return std::chrono::duration<double>(_ns).count();
144 }
145
150 bool isZero() const { return _ns.count() == 0; }
151
156 bool isNegative() const { return _ns.count() < 0; }
157
163
165 Duration operator+(const Duration &o) const { return Duration(_ns + o._ns); }
167 Duration operator-(const Duration &o) const { return Duration(_ns - o._ns); }
169 Duration operator*(int64_t s) const { return Duration(_ns * s); }
171 Duration operator/(int64_t s) const { return Duration(_ns / s); }
172
174 bool operator==(const Duration &o) const { return _ns == o._ns; }
176 bool operator!=(const Duration &o) const { return _ns != o._ns; }
178 bool operator<(const Duration &o) const { return _ns < o._ns; }
180 bool operator>(const Duration &o) const { return _ns > o._ns; }
182 bool operator<=(const Duration &o) const { return _ns <= o._ns; }
184 bool operator>=(const Duration &o) const { return _ns >= o._ns; }
185
186 private:
187 explicit Duration(std::chrono::nanoseconds ns) : _ns(ns) {}
188 std::chrono::nanoseconds _ns;
189};
190
Time duration with nanosecond precision.
Definition duration.h:26
bool operator==(const Duration &o) const
Equality comparison.
Definition duration.h:174
static Duration fromMinutes(int64_t m)
Creates a Duration from minutes.
Definition duration.h:43
int64_t nanoseconds() const
Returns the total number of nanoseconds.
Definition duration.h:134
int64_t minutes() const
Returns the total number of whole minutes.
Definition duration.h:102
bool operator<(const Duration &o) const
Less-than comparison.
Definition duration.h:178
Duration operator*(int64_t s) const
Scalar multiplication operator.
Definition duration.h:169
Duration operator+(const Duration &o) const
Addition operator.
Definition duration.h:165
static Duration fromNanoseconds(int64_t ns)
Creates a Duration from nanoseconds.
Definition duration.h:83
String toString() const
Returns a human-readable representation (e.g. "1h 23m 45s").
bool operator>(const Duration &o) const
Greater-than comparison.
Definition duration.h:180
Duration()
Default constructor. Creates a zero duration.
Definition duration.h:88
double toSecondsDouble() const
Returns the duration as a fractional number of seconds.
Definition duration.h:142
static Duration fromSeconds(int64_t s)
Creates a Duration from seconds.
Definition duration.h:53
int64_t seconds() const
Returns the total number of whole seconds.
Definition duration.h:110
static Duration fromMilliseconds(int64_t ms)
Creates a Duration from milliseconds.
Definition duration.h:63
bool operator<=(const Duration &o) const
Less-than-or-equal comparison.
Definition duration.h:182
static Duration fromHours(int64_t h)
Creates a Duration from hours.
Definition duration.h:33
int64_t microseconds() const
Returns the total number of whole microseconds.
Definition duration.h:126
bool isZero() const
Returns true if the duration is exactly zero.
Definition duration.h:150
Duration operator-(const Duration &o) const
Subtraction operator.
Definition duration.h:167
bool isNegative() const
Returns true if the duration is negative.
Definition duration.h:156
int64_t milliseconds() const
Returns the total number of whole milliseconds.
Definition duration.h:118
bool operator!=(const Duration &o) const
Inequality comparison.
Definition duration.h:176
int64_t hours() const
Returns the total number of whole hours.
Definition duration.h:94
static Duration fromMicroseconds(int64_t us)
Creates a Duration from microseconds.
Definition duration.h:73
Duration operator/(int64_t s) const
Scalar division operator.
Definition duration.h:171
bool operator>=(const Duration &o) const
Greater-than-or-equal comparison.
Definition duration.h:184
Dynamic array container wrapping std::vector.
Definition list.h:40
size_t count(const T &value) const
Returns the number of occurrences of value.
Definition list.h:629
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19