MCPcopy Create free account
hub / github.com/catchorg/Catch2 / Duration

Class Duration

extras/catch_amalgamated.cpp:9625–9695  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9623struct OutputFlush {};
9624
9625class Duration {
9626 enum class Unit : uint8_t {
9627 Auto,
9628 Nanoseconds,
9629 Microseconds,
9630 Milliseconds,
9631 Seconds,
9632 Minutes
9633 };
9634 static const uint64_t s_nanosecondsInAMicrosecond = 1000;
9635 static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
9636 static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
9637 static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
9638
9639 double m_inNanoseconds;
9640 Unit m_units;
9641
9642public:
9643 explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
9644 : m_inNanoseconds(inNanoseconds),
9645 m_units(units) {
9646 if (m_units == Unit::Auto) {
9647 if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
9648 m_units = Unit::Nanoseconds;
9649 else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
9650 m_units = Unit::Microseconds;
9651 else if (m_inNanoseconds < s_nanosecondsInASecond)
9652 m_units = Unit::Milliseconds;
9653 else if (m_inNanoseconds < s_nanosecondsInAMinute)
9654 m_units = Unit::Seconds;
9655 else
9656 m_units = Unit::Minutes;
9657 }
9658
9659 }
9660
9661 auto value() const -> double {
9662 switch (m_units) {
9663 case Unit::Microseconds:
9664 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
9665 case Unit::Milliseconds:
9666 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
9667 case Unit::Seconds:
9668 return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
9669 case Unit::Minutes:
9670 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
9671 default:
9672 return m_inNanoseconds;
9673 }
9674 }
9675 StringRef unitsAsString() const {
9676 switch (m_units) {
9677 case Unit::Nanoseconds:
9678 return "ns"_sr;
9679 case Unit::Microseconds:
9680 return "us"_sr;
9681 case Unit::Milliseconds:
9682 return "ms"_sr;

Callers 2

benchmarkStartingMethod · 0.70
benchmarkEndedMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected