Class coroutine<>::pull_type
#include < boost / coroutine2 / coroutine . hpp >
template < typename R >
class coroutine <>:: pull_type
{
public :
pull_type () noexcept ;
template < typename Fn >
pull_type ( Fn && fn , attributes const & attr = attributes () );
template < typename Fn , typename StackAllocator >
pull_type ( Fn && fn , attributes const & attr , StackAllocator stack_alloc );
pull_type ( pull_type const & other )= delete ;
pull_type & operator =( pull_type const & other )= delete ;
~ pull_type ();
pull_type ( pull_type && other ) noexcept ;
pull_type & operator =( pull_type && other ) noexcept ;
operator unspecified - bool - type () const noexcept ;
bool operator !() const noexcept ;
void swap ( pull_type & other ) noexcept ;
pull_type & operator ()();
R get () const ;
};
template < typename R >
void swap ( pull_type < R > & l , pull_type < R > & r );
template < typename R >
range_iterator < pull_type < R > >:: type begin ( pull_type < R > &);
template < typename R >
range_iterator < pull_type < R > >:: type end ( pull_type < R > &);
Effects:
Создает корутин, представляющийне-корутин .
Throws:
Ничего.
Preconditions:
<size
>>= minimum_stacksize(),<size
><= maximum_stacksize() when ! is_stack_unbounded().
Effects:
Создает корутин, который будет исполнять<fn
>и войдет в него. Аргумент<attr
>определяет очистку стека и сохранение регистров с плавающей запятой.
Throws:
Исключения, брошенные внутрькорутинная функция .
Preconditions:
<size
>>= minimum_stacksize(),<size
><= maximum_stacksize() when ! is_stack_unbounded().
Effects:
Создает систему, которая будет выполнять<fn
>. Аргумент<attr
>определяет очистку стека и сохранение регистров с плавающей запятой. Для выделения/размещения используется стек<stack_alloc
>.
Throws:
Исключения, брошенные внутрькорутинная функция .
Effects:
Уничтожает контекст и распределяет стек.
Effects:
Переносит внутренние данные<other
>на<* this
>.<other
>становитсяне-корутин .
Throws:
Ничего.
Effects:
Уничтожает внутренние данные<* this
>и перемещает внутренние данные<other
>в<* this
>.<other
>становитсяне-коротин .
Throws:
Ничего.
Returns:
Если<* this
>относится кне-a-coroutine или функция-coroutine вернулась (завершена), функция возвращается<false
>. В противном случае<true
>.
Throws:
Ничего.
Returns:
Если<* this
>относится кне-a-coroutine или функция-coroutine вернулась (завершена), функция возвращается<true
>. В противном случае<false
>.
Throws:
Ничего.
Preconditions:
<* this
>не являетсяне-коротин .
Effects:
Контроль исполнения передается вкорутин-функцию (параметр к корутин-функции не передается).
Throws:
Исключения, брошенные внутрькорутинная функция .
R coroutine < R , StackAllocator >:: pull_type :: get ();
R & coroutine < R &, StackAllocator >:: pull_type :: get ();
void coroutine < void , StackAllocator >:: pull_type :: get ()= delete ;
Preconditions:
<* this
>не являетсяне-коротин .
Returns:
Возвращает данные, передаваемые с корутинной функцииcoroutine<>::push_type::operator() .
Throws:
<invalid_result
>
Note:
Если<R
>является типом только для движения, вы можете позвонить<get ()
>только один раз перед следующимкорутинным<>::pull_type::operator() вызовом.
Effects:
Обмен внутренними данными<* this
>со значениями<other
>.
Throws:
Ничего.
template < typename R >
void swap ( pull_type < R > & l , pull_type < R > & r );
Effects:
Как будто "l.swap(r)".
template < typename R >
range_iterator < pull_type < R > >:: type begin ( pull_type < R > &);
Returns:
Возвращает данные, передаваемые с корутинной функцииcoroutine<>::push_type::operator() .
template < typename R >
range_iterator < pull_type < R > >:: type end ( pull_type < R > &);
Returns:
Возвращает данные, передаваемые с корутинной функцииcoroutine<>::push_type::operator() .
Note:
При первом получении из<begin ( pull_type < R
> &)
>или после некоторого количества операций приращения итератор будет сравниваться с итератором, возвращаемым<end ( pull_type < R
> &)
>, когда соответствующийкорутин<>::pull_type::operator bool вернется<false
>.
Статья Class coroutine<>::pull_type раздела Chapter 1. Coroutine2 Asymmetric coroutine может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Asymmetric coroutine ::