libcoro  1.0
Coroutine support library for C++20
Public Member Functions | List of all members
coro::collector< Collectible, Result, Alloc > Class Template Reference

The collector is a reversed generator. The coroutine consumes values and then returns a result. More...

#include <collector.h>

+ Inheritance diagram for coro::collector< Collectible, Result, Alloc >:
+ Collaboration diagram for coro::collector< Collectible, Result, Alloc >:

Public Member Functions

 collector ()=default
 construct uninitalized collector - you can initialize it later by assignment More...
 
 collector (collector &&other)
 move More...
 
template<typename A >
 collector (collector< Collectible, Result, A > &&other)
 convert from different allocator More...
 
collectoroperator= (collector &&other)
 assign by move More...
 
template<typename ... Args>
future< bool > operator() (Args &&... args)
 call collected and push next collectible item More...
 
- Public Member Functions inherited from coro::future< Result >
 future (std::in_place_t, Args &&... args)
 Construct future already resolved with a value. More...
 
 future (Fn &&fn)
 Construct future which is evaluated inside of lambda function. More...
 
 future (deferred_tag, Fn &&fn)
 Construct future with deferred evaluation. More...
 
 requires (std::constructible_from< value_store_type, Args ... > &&avoid_same_kind< future, Args... >) future(Args &&... args)
 Construct future already resolved with a value. More...
 
 ~future ()
 dtor More...
 
futureoperator<< (Fn &&fn)
 Store result future in already declared value. More...
 
promise_t get_promise ()
 Retrieve promise and begin evaluation. More...
 
prepared_coro start ()
 Start deferred execution. More...
 
bool set_callback (Fn &&fn)
 Sets callback which is called once future is resolved (in future) More...
 
bool unset_callback ()
 unset callback More...
 
bool then (Fn &&fn)
 Sets function which is called once future is resolved (always) More...
 
bool operator>> (Fn &&fn)
 Sets function which is called once future is resolved (always) More...
 
wait_awaiter wait () noexcept
 Perform synchronous wait on resolution. More...
 
ret_value get ()
 Retrieves value, performs synchronous wait. More...
 
 operator cast_ret_value ()
 Retrieves value, performs synchronous wait. More...
 
bool is_pending () const
 Determines pending status. More...
 
bool is_in_progress () const
 Determine in progress status. More...
 
bool is_deferred () const
 Determine deferred status. More...
 
bool is_awaited () const
 Determine whether an awaiter is set. More...
 
bool await_ready () const noexcept
 co_await support, returns true, if value is ready (resolved) More...
 
std::coroutine_handle await_suspend (std::coroutine_handle<> h) noexcept
 co_await support, called with suspended coroutine More...
 
bool has_value () const
 Determines, whether future has a value. More...
 
bool has_exception () const
 Determines, whether future has exception. More...
 
canceled_awaiter operator! ()
 awaitable for canceled operation More...
 
promise< X >::notify forward_to (promise< X > &prom) &noexcept
 Forward value, possibly convert it, to different promise. More...
 
promise< X >::notify forward_to (promise< X > &prom) &&noexcept
 Forward value, possibly convert it, to different promise. More...
 
promise< X >::notify convert_to (promise< X > &prom, Fn &&convert) noexcept
 Forward value, possibly convert it, to different promise. More...
 

Additional Inherited Members

- Public Types inherited from coro::future< Result >
using cast_ret_value = std::conditional_t< std::is_void_v< Result >, bool, std::add_rvalue_reference_t< Result > >
 type which is used for cast operator () More...
 
using ret_value = std::conditional_t< std::is_void_v< Result >, void, std::add_rvalue_reference_t< Result > >
 type which is used as return value of get() and await_resume() More...
 
- Protected Member Functions inherited from coro::future< Result >
bool startDeferredEvaluation (ResumeFn &&resume_fn) noexcept
 Starts evaluation of deferred future. More...
 
void setDeferredEvaluation (Fn &&fn)
 Initializes deferred evaluation. More...
 
void attach (future *x)
 Attach future to internal linked list. More...
 
futuredetach ()
 Detach linked list from the future. More...
 

Detailed Description

template<typename Collectible, typename Result, coro_allocator Alloc = std_allocator>
class coro::collector< Collectible, Result, Alloc >

The collector is a reversed generator. The coroutine consumes values and then returns a result.

The values are awaited by co_yield nullptr (or co_yield <anything>). The value itself is ignored. Return value of co_yield is next collectible item;

Template Parameters
CollectibleItems to collect
ResultType of return value
Allocoptional allocator

Definition at line 44 of file collector.h.


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