LeechCraft
0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
corocontext.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 <coroutine>
12
#include <list>
13
#include <stdexcept>
14
#include <vector>
15
#include <QStringList>
16
#include "
../threadsconfig.h
"
17
18
class
QObject;
19
20
namespace
LC::Util
21
{
22
class
UTIL_THREADS_API
ContextDeadException
:
public
std::runtime_error
23
{
24
public
:
25
explicit
ContextDeadException
(
const
QString&);
26
};
27
28
struct
ContextExtensionBase
;
29
30
namespace
detail
31
{
32
struct
PromiseBase;
33
}
34
35
class
UTIL_THREADS_API
CoroContext
36
{
37
friend
struct
AddContext
;
38
friend
struct
ContextExtensionBase
;
39
40
public
:
41
struct
Coro
42
{
43
std::coroutine_handle<>
Handle_
;
44
detail::PromiseBase
*
Base_
;
45
ContextExtensionBase
*
Promise_
;
46
};
47
using
Coros
= std::list<Coro>;
48
private
:
49
std::list<Coro> Coros_;
50
QString Name_;
51
public
:
52
struct
Registration
53
{
54
CoroContext
*
Ctx_
;
55
Coros::iterator
Pos_
;
56
};
57
using
Registrations
= std::vector<Registration>;
58
59
CoroContext
() =
default
;
60
explicit
CoroContext
(
const
QString&);
61
explicit
CoroContext
(
const
QObject&);
62
63
CoroContext
(
const
CoroContext
&) =
delete
;
64
CoroContext
(
CoroContext
&&) =
delete
;
65
CoroContext
& operator= (
const
CoroContext
&) =
delete
;
66
CoroContext
& operator= (
CoroContext
&&) =
delete
;
67
68
~CoroContext
();
69
70
QString
GetName
()
const
{
return
Name_; }
71
83
static
CoroContext
& Of (QObject& obj);
84
};
85
}
86
93
#define LC_CORO_CONTEXT \
94
private: \
95
::LC::Util::CoroContext CoroContext_ { *this };
LC::Util::ContextDeadException::ContextDeadException
ContextDeadException(const QString &)
Definition
corocontext.cpp:18
LC::Util::CoroContext
Definition
corocontext.h:36
LC::Util::CoroContext::CoroContext
CoroContext()=default
LC::Util::CoroContext::Coros
std::list< Coro > Coros
Definition
corocontext.h:47
LC::Util::CoroContext::ContextExtensionBase
friend struct ContextExtensionBase
Definition
corocontext.h:38
LC::Util::CoroContext::AddContext
friend struct AddContext
Definition
corocontext.h:37
LC::Util::CoroContext::CoroContext
CoroContext(const CoroContext &)=delete
LC::Util::CoroContext::CoroContext
CoroContext(CoroContext &&)=delete
LC::Util::CoroContext::Registrations
std::vector< Registration > Registrations
Definition
corocontext.h:57
LC::Util::CoroContext::GetName
QString GetName() const
Definition
corocontext.h:70
LC::Util::detail
Definition
fancytrayiconfreedesktop.cpp:24
LC::Util
Definition
icoreproxy.h:34
LC::Util::ContextExtensionBase
Definition
context.h:113
LC::Util::CoroContext::Coro
Definition
corocontext.h:42
LC::Util::CoroContext::Coro::Handle_
std::coroutine_handle Handle_
Definition
corocontext.h:43
LC::Util::CoroContext::Coro::Promise_
ContextExtensionBase * Promise_
Definition
corocontext.h:45
LC::Util::CoroContext::Coro::Base_
detail::PromiseBase * Base_
Definition
corocontext.h:44
LC::Util::CoroContext::Registration
Definition
corocontext.h:53
LC::Util::CoroContext::Registration::Ctx_
CoroContext * Ctx_
Definition
corocontext.h:54
LC::Util::CoroContext::Registration::Pos_
Coros::iterator Pos_
Definition
corocontext.h:55
LC::Util::detail::PromiseBase
Definition
task.h:24
threadsconfig.h
UTIL_THREADS_API
#define UTIL_THREADS_API
Definition
threadsconfig.h:16
src
util
threads
coro
corocontext.h
Generated by
1.18.0