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

This is the documentation for a snapshot of the develop branch, built from commit 0f79ae966a.
PrevUpHomeNext

Class symmetric_coroutine<>::call_type

#include <boost/coroutine/symmetric_coroutine.hpp>

template< typename Arg >
class symmetric_coroutine<>::call_type
{
public:
    call_type() noexcept;

    template< typename Fn >
    call_type( Fn && fn, attributes const& attr = attributes() );

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

    ~call_type();

    call_type( call_type const& other)=delete;

    call_type & operator=( call_type const& other)=delete;

    call_type( call_type && other) noexcept;

    call_type & operator=( call_type && other) noexcept;

    operator unspecified-bool-type() const;

    bool operator!() const noexcept;

    void swap( call_type & other) noexcept;

    call_type & operator()( Arg arg) noexcept;
};

template< typename Arg >
void swap( symmetric_coroutine< Arg >::call_type & l, symmetric_coroutine< Arg >::call_type & r);
call_type()

Effects:

Creates a coroutine representing not-a-coroutine.

Throws:

Nothing.

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

Preconditions:

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

Effects:

Creates a coroutine which will execute fn. Argument attr determines stack clean-up and preserving floating-point registers. For allocating/deallocating the stack stack_alloc is used.

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

Preconditions:

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

Effects:

Creates a coroutine which will execute fn. Argument attr determines stack clean-up and preserving floating-point registers. For allocating/deallocating the stack stack_alloc is used.

~call_type()

Effects:

Destroys the context and deallocates the stack.

call_type( call_type && other)

Effects:

Moves the internal data of other to *this. other becomes not-a-coroutine.

Throws:

Nothing.

call_type & operator=( call_type && other)

Effects:

Destroys the internal data of *this and moves the internal data of other to *this. other becomes not-a-coroutine.

Throws:

Nothing.

operator unspecified-bool-type() const

Returns:

If *this refers to not-a-coroutine or the coroutine-function has returned (completed), the function returns false. Otherwise true.

Throws:

Nothing.

bool operator!() const

Returns:

If *this refers to not-a-coroutine or the coroutine-function has returned (completed), the function returns true. Otherwise false.

Throws:

Nothing.

void swap( call_type & other)

Effects:

Swaps the internal data from *this with the values of other.

Throws:

Nothing.

call_type & operator()(Arg arg)
symmetric_coroutine::call_type& coroutine<Arg,StackAllocator>::call_type::operator()(Arg);
symmetric_coroutine::call_type& coroutine<Arg&,StackAllocator>::call_type::operator()(Arg&);
symmetric_coroutine::call_type& coroutine<void,StackAllocator>::call_type::operator()();

Preconditions:

operator unspecified-bool-type() returns true for *this.

Effects:

Execution control is transferred to coroutine-function and the argument arg is passed to the coroutine-function.

Throws:

Nothing.

Non-member function swap()
template< typename Arg >
void swap( symmetric_coroutine< Arg >::call_type & l, symmetric_coroutine< Arg >::call_type & r);

Effects:

As if 'l.swap( r)'.


PrevUpHomeNext