uvco 0.1
Loading...
Searching...
No Matches
uvco::Generator< T >::YieldAwaiter_ Struct Reference
Collaboration diagram for uvco::Generator< T >::YieldAwaiter_:

Public Member Functions

 YieldAwaiter_ (PromiseCore_ &core)
bool await_ready () const
bool await_suspend (std::coroutine_handle<>)
void await_resume ()

Public Attributes

PromiseCore_core_

Detailed Description

template<typename T>
struct uvco::Generator< T >::YieldAwaiter_

A YieldAwaiter_ suspends a coroutine returning a MultiPromise (i.e. a generator) and resumes it when the value is read by the awaiting coroutine.

Constructor & Destructor Documentation

◆ YieldAwaiter_()

template<typename T>
uvco::Generator< T >::YieldAwaiter_::YieldAwaiter_ ( PromiseCore_ & core)
inlineexplicit
341: core_{core} {}
Definition multipromise.h:278
PromiseCore_ & core_
Definition multipromise.h:355

Member Function Documentation

◆ await_ready()

template<typename T>
bool uvco::Generator< T >::YieldAwaiter_::await_ready ( ) const
inlinenodiscard
343{ return !core_.slot.has_value(); }

◆ await_resume()

template<typename T>
void uvco::Generator< T >::YieldAwaiter_::await_resume ( )
inline
351 {
352 // Returning into the generator coroutine
353 }

◆ await_suspend()

template<typename T>
bool uvco::Generator< T >::YieldAwaiter_::await_suspend ( std::coroutine_handle<> )
inline
345 {
346 // The core_ already knows our handle from initial_suspend().
347 core_.suspendGenerator();
348 return true;
349 }

Member Data Documentation

◆ core_

template<typename T>
PromiseCore_& uvco::Generator< T >::YieldAwaiter_::core_

The documentation for this struct was generated from the following file: