Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class coroutine<>::pull_type

Boost , Chapter 1. Coroutine2 , Asymmetric coroutine

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
#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 > &);
pull_type()

Effects:

Создает корутин, представляющийне-корутин.

Throws:

Ничего.

template< typename Fn > pull_type( Fn && fn, attributes const& attr)

Preconditions:

<size>>= minimum_stacksize(),<size><= maximum_stacksize() when ! is_stack_unbounded().

Effects:

Создает корутин, который будет исполнять<fn>и войдет в него. Аргумент<attr>определяет очистку стека и сохранение регистров с плавающей запятой.

Throws:

Исключения, брошенные внутрькорутинная функция.

template< typename Fn, typename StackAllocator > pull_type( Fn && fn, attributes const& attr, StackAllocator const& stack_alloc)

Preconditions:

<size>>= minimum_stacksize(),<size><= maximum_stacksize() when ! is_stack_unbounded().

Effects:

Создает систему, которая будет выполнять<fn>. Аргумент<attr>определяет очистку стека и сохранение регистров с плавающей запятой. Для выделения/размещения используется стек<stack_alloc>.

Throws:

Исключения, брошенные внутрькорутинная функция.

~pull_type()

Effects:

Уничтожает контекст и распределяет стек.

pull_type( pull_type && other)

Effects:

Переносит внутренние данные<other>на<*this>.<other>становитсяне-корутин.

Throws:

Ничего.

pull_type & operator=( pull_type && other)

Effects:

Уничтожает внутренние данные<*this>и перемещает внутренние данные<other>в<*this>.<other>становитсяне-коротин.

Throws:

Ничего.

operator unspecified-bool-type() const

Returns:

Если<*this>относится кне-a-coroutineили функция-coroutine вернулась (завершена), функция возвращается<false>. В противном случае<true>.

Throws:

Ничего.

bool operator!() const

Returns:

Если<*this>относится кне-a-coroutineили функция-coroutine вернулась (завершена), функция возвращается<true>. В противном случае<false>.

Throws:

Ничего.

pull_type<> & operator()()

Preconditions:

<*this>не являетсяне-коротин.

Effects:

Контроль исполнения передается вкорутин-функцию(параметр к корутин-функции не передается).

Throws:

Исключения, брошенные внутрькорутинная функция.

R get()
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()вызовом.

void swap( pull_type & other)

Effects:

Обмен внутренними данными<*this>со значениями<other>.

Throws:

Ничего.

Non-member function swap()
template< typename R >
void swap( pull_type< R > & l, pull_type< R > & r);

Effects:

Как будто "l.swap(r)".

Non-member function begin( pull_type< R > &)
template< typename R >
range_iterator< pull_type< R > >::type begin( pull_type< R > &);

Returns:

Возвращает данные, передаваемые с корутинной функцииcoroutine<>::push_type::operator().

Non-member function end( pull_type< R > &)
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>.


PrevUpHomeNext

Статья Class coroutine<>::pull_type раздела Chapter 1. Coroutine2 Asymmetric coroutine может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Asymmetric coroutine ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 00:37:46/0.0044841766357422/0