MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/TriangleMeshDistance / Duration

Class Duration

tests/catch.hpp:13263–13333  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13261struct RowBreak {};
13262
13263class Duration {
13264 enum class Unit {
13265 Auto,
13266 Nanoseconds,
13267 Microseconds,
13268 Milliseconds,
13269 Seconds,
13270 Minutes
13271 };
13272 static const uint64_t s_nanosecondsInAMicrosecond = 1000;
13273 static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
13274 static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
13275 static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
13276
13277 uint64_t m_inNanoseconds;
13278 Unit m_units;
13279
13280public:
13281 explicit Duration(uint64_t inNanoseconds, Unit units = Unit::Auto)
13282 : m_inNanoseconds(inNanoseconds),
13283 m_units(units) {
13284 if (m_units == Unit::Auto) {
13285 if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
13286 m_units = Unit::Nanoseconds;
13287 else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
13288 m_units = Unit::Microseconds;
13289 else if (m_inNanoseconds < s_nanosecondsInASecond)
13290 m_units = Unit::Milliseconds;
13291 else if (m_inNanoseconds < s_nanosecondsInAMinute)
13292 m_units = Unit::Seconds;
13293 else
13294 m_units = Unit::Minutes;
13295 }
13296
13297 }
13298
13299 auto value() const -> double {
13300 switch (m_units) {
13301 case Unit::Microseconds:
13302 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
13303 case Unit::Milliseconds:
13304 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
13305 case Unit::Seconds:
13306 return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
13307 case Unit::Minutes:
13308 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
13309 default:
13310 return static_cast<double>(m_inNanoseconds);
13311 }
13312 }
13313 auto unitsAsString() const -> std::string {
13314 switch (m_units) {
13315 case Unit::Nanoseconds:
13316 return "ns";
13317 case Unit::Microseconds:
13318 return "µs";
13319 case Unit::Milliseconds:
13320 return "ms";

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected