summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qbasictimer.h
blob: 39f098e3203cb8afe0e71e45d27172f77fa00253 (plain)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
// Copyright (C) 2020 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 QBASICTIMER_H#define QBASICTIMER_H#include <QtCore/qglobal.h>#include <QtCore/qabstracteventdispatcher.h>#include <QtCore/qnamespace.h>#include <chrono> QT_BEGIN_NAMESPACE class QObject;class Q_CORE_EXPORT QBasicTimer {Qt::TimerId m_id;Q_DISABLE_COPY(QBasicTimer)public:// use the same duration typeusing Duration =QAbstractEventDispatcher::Duration;constexprQBasicTimer() noexcept : m_id{Qt::TimerId::Invalid} {}~QBasicTimer() {if(isActive())stop(); }QBasicTimer(QBasicTimer &&other) noexcept : m_id{std::exchange(other.m_id,Qt::TimerId::Invalid)}{}QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QBasicTimer)voidswap(QBasicTimer &other) noexcept {std::swap(m_id, other.m_id); }boolisActive()const noexcept {return m_id !=Qt::TimerId::Invalid; }inttimerId()const noexcept {returnqToUnderlying(id()); }Qt::TimerId id()const noexcept {return m_id; }QT_CORE_INLINE_SINCE(6,5)voidstart(int msec, QObject *obj);QT_CORE_INLINE_SINCE(6,5)voidstart(int msec,Qt::TimerType timerType, QObject *obj);#if QT_CORE_REMOVED_SINCE(6, 9)voidstart(std::chrono::milliseconds duration, QObject *obj);voidstart(std::chrono::milliseconds duration,Qt::TimerType timerType, QObject *obj);#endifvoidstart(Duration duration, QObject *obj){start(duration,Qt::CoarseTimer, obj); }voidstart(Duration duration,Qt::TimerType timerType, QObject *obj);voidstop();};Q_DECLARE_TYPEINFO(QBasicTimer, Q_RELOCATABLE_TYPE);#if QT_CORE_INLINE_IMPL_SINCE(6, 5)voidQBasicTimer::start(int msec, QObject *obj){start(std::chrono::milliseconds{msec}, obj);}voidQBasicTimer::start(int msec,Qt::TimerType t, QObject *obj){start(std::chrono::milliseconds{msec}, t, obj);}#endifinlinevoidswap(QBasicTimer &lhs, QBasicTimer &rhs) noexcept { lhs.swap(rhs); } QT_END_NAMESPACE #endif// QBASICTIMER_H
close