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 ::