MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / Duration

Class Duration

extlibs/catch/include/catch/catch.hpp:15475–15549  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15473struct RowBreak {};
15474
15475class Duration {
15476 enum class Unit {
15477 Auto,
15478 Nanoseconds,
15479 Microseconds,
15480 Milliseconds,
15481 Seconds,
15482 Minutes
15483 };
15484 static const uint64_t s_nanosecondsInAMicrosecond = 1000;
15485 static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
15486 static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
15487 static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
15488
15489 uint64_t m_inNanoseconds;
15490 Unit m_units;
15491
15492public:
15493 explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
15494 : Duration(static_cast<uint64_t>(inNanoseconds), units) {
15495 }
15496
15497 explicit Duration(uint64_t inNanoseconds, Unit units = Unit::Auto)
15498 : m_inNanoseconds(inNanoseconds),
15499 m_units(units) {
15500 if (m_units == Unit::Auto) {
15501 if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
15502 m_units = Unit::Nanoseconds;
15503 else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
15504 m_units = Unit::Microseconds;
15505 else if (m_inNanoseconds < s_nanosecondsInASecond)
15506 m_units = Unit::Milliseconds;
15507 else if (m_inNanoseconds < s_nanosecondsInAMinute)
15508 m_units = Unit::Seconds;
15509 else
15510 m_units = Unit::Minutes;
15511 }
15512
15513 }
15514
15515 auto value() const -> double {
15516 switch (m_units) {
15517 case Unit::Microseconds:
15518 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
15519 case Unit::Milliseconds:
15520 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
15521 case Unit::Seconds:
15522 return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
15523 case Unit::Minutes:
15524 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
15525 default:
15526 return static_cast<double>(m_inNanoseconds);
15527 }
15528 }
15529 auto unitsAsString() const -> std::string {
15530 switch (m_units) {
15531 case Unit::Nanoseconds:
15532 return "ns";

Callers 3

analyseFunction · 0.85
benchmarkStartingMethod · 0.85
benchmarkEndedMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected