summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qelapsedtimer.h
blob: e71573456d4291e45aac9f67805383270157b2c3 (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QELAPSEDTIMER_H#define QELAPSEDTIMER_H#include <QtCore/qcompare.h>#include <QtCore/qglobal.h>#include <chrono> QT_BEGIN_NAMESPACE class Q_CORE_EXPORT QElapsedTimer {public:enum ClockType { SystemTime, MonotonicClock, TickCounter Q_DECL_ENUMERATOR_DEPRECATED_X("Not supported anymore. Use PerformanceCounter instead."), MachAbsoluteTime, PerformanceCounter };// similar to std::chrono::*_clockusing Duration =std::chrono::nanoseconds;using TimePoint =std::chrono::time_point<std::chrono::steady_clock, Duration>;constexprQElapsedTimer() =default;static ClockType clockType() noexcept;static boolisMonotonic() noexcept;voidstart() noexcept; qint64 restart() noexcept;voidinvalidate() noexcept;boolisValid()const noexcept; Duration durationElapsed()const noexcept; qint64 nsecsElapsed()const noexcept; qint64 elapsed()const noexcept;boolhasExpired(qint64 timeout)const noexcept; qint64 msecsSinceReference()const noexcept; Duration durationTo(const QElapsedTimer &other)const noexcept; qint64 msecsTo(const QElapsedTimer &other)const noexcept; qint64 secsTo(const QElapsedTimer &other)const noexcept;friendbool Q_CORE_EXPORT operator<(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept;private:friendboolcomparesEqual(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept {return lhs.t1 == rhs.t1 && lhs.t2 == rhs.t2;}Q_DECLARE_EQUALITY_COMPARABLE(QElapsedTimer)friend Qt::strong_ordering compareThreeWay(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept {returnQt::compareThreeWay(lhs.t1, rhs.t1);}#if defined(__cpp_lib_three_way_comparison)friend std::strong_ordering operator<=>(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept {returncompareThreeWay(lhs, rhs);}#elsefriendbooloperator>(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept {returnis_gt(compareThreeWay(lhs, rhs));}friendbooloperator<=(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept {returnis_lteq(compareThreeWay(lhs, rhs));}friendbooloperator>=(const QElapsedTimer &lhs,const QElapsedTimer &rhs) noexcept {returnis_gteq(compareThreeWay(lhs, rhs));}#endif// defined(__cpp_lib_three_way_comparison) qint64 t1 =Q_INT64_C(0x8000000000000000); qint64 t2 =Q_INT64_C(0x8000000000000000);}; QT_END_NAMESPACE #endif// QELAPSEDTIMER_H
close