LeechCraft  0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
finalsuspender.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 
13 namespace LC::Util::detail
14 {
15  template<typename Promise>
17  {
18  Promise& Promise_;
19 
20  bool await_ready () const noexcept { return false; }
21 
22  auto await_suspend (std::coroutine_handle<>) noexcept
23  {
24  const auto cont = Promise_.Continuation_.exchange ({});
25  Promise_.DecRef ();
26  return cont ? cont : std::noop_coroutine ();
27  }
28 
29  void await_resume () const noexcept {}
30  };
31 }
auto await_suspend(std::coroutine_handle<>) noexcept
auto Tup2 &&tup2 noexcept
Definition: ctstringutils.h:68
bool await_ready() const noexcept
void await_resume() const noexcept