LeechCraft
0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
timer.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <chrono>
12
#include <coroutine>
13
#include <QTimer>
14
#include "
../threadsconfig.h
"
15
16
namespace
LC::Util
17
{
18
namespace
detail
19
{
20
struct
UTIL_THREADS_API
TimerAwaiter
21
{
22
QTimer
Timer_
;
23
24
explicit
TimerAwaiter
(std::chrono::milliseconds duration, Qt::TimerType precision);
25
26
bool
await_ready
() const noexcept;
27
void
await_suspend
(std::coroutine_handle<> handle) noexcept;
28
void
await_resume
() const noexcept;
29
};
30
}
31
32
template<Qt::TimerType Precision>
33
struct
WithPrecision
34
{
35
std::chrono::milliseconds
Duration_
;
36
37
auto
operator
co_await
()
const
38
{
39
return
detail::TimerAwaiter
{
Duration_
, Precision };
40
}
41
};
42
43
using
Precisely
=
WithPrecision<Qt::PreciseTimer>
;
44
using
Coarsely
=
WithPrecision<Qt::CoarseTimer>
;
45
using
VeryCoarsely
=
WithPrecision<Qt::VeryCoarseTimer>
;
46
}
47
48
namespace
LC
49
{
50
UTIL_THREADS_API
Util::detail::TimerAwaiter
operator
co_await
(std::chrono::milliseconds duration);
51
}
LC::Util::detail
Definition
fancytrayiconfreedesktop.cpp:24
LC::Util
Definition
icoreproxy.h:34
LC::Util::Precisely
WithPrecision< Qt::PreciseTimer > Precisely
Definition
timer.h:43
LC::Util::VeryCoarsely
WithPrecision< Qt::VeryCoarseTimer > VeryCoarsely
Definition
timer.h:45
LC::Util::Coarsely
WithPrecision< Qt::CoarseTimer > Coarsely
Definition
timer.h:44
LC
Definition
constants.h:15
LC::Util::WithPrecision
Definition
timer.h:34
LC::Util::WithPrecision< Qt::PreciseTimer >::Duration_
std::chrono::milliseconds Duration_
Definition
timer.h:35
LC::Util::detail::TimerAwaiter
Definition
timer.h:21
LC::Util::detail::TimerAwaiter::await_ready
bool await_ready() const noexcept
Definition
timer.cpp:21
LC::Util::detail::TimerAwaiter::TimerAwaiter
TimerAwaiter(std::chrono::milliseconds duration, Qt::TimerType precision)
Definition
timer.cpp:14
LC::Util::detail::TimerAwaiter::await_resume
void await_resume() const noexcept
Definition
timer.cpp:32
LC::Util::detail::TimerAwaiter::await_suspend
void await_suspend(std::coroutine_handle<> handle) noexcept
Definition
timer.cpp:26
LC::Util::detail::TimerAwaiter::Timer_
QTimer Timer_
Definition
timer.h:22
threadsconfig.h
UTIL_THREADS_API
#define UTIL_THREADS_API
Definition
threadsconfig.h:16
src
util
threads
coro
timer.h
Generated by
1.17.0