| Home | Libraries | People | FAQ | More

## Attributes

Class `attributes` is used to transfers parameters required to setup a coroutines's context.

    struct attributes
    {
        std::size_t     size;
        flag_unwind_t   do_unwind;
        bool            preserve_fpu;

        attributes() BOOST_NOEXCEPT :
            size( ctx::default_stacksize() ),
            do_unwind( stack_unwind),
            preserve_fpu( true)
        {}

        explicit attributes( std::size_t size_) BOOST_NOEXCEPT :
            size( size_),
            do_unwind( stack_unwind),
            preserve_fpu( true)
        {}

        explicit attributes( flag_unwind_t do_unwind_) BOOST_NOEXCEPT :
            size( ctx::default_stacksize() ),
            do_unwind( do_unwind_),
            preserve_fpu( true)
        {}

        explicit attributes( bool preserve_fpu_) BOOST_NOEXCEPT :
            size( ctx::default_stacksize() ),
            do_unwind( stack_unwind),
            preserve_fpu( preserve_fpu_)
        {}

        explicit attributes(
                std::size_t size_,
                flag_unwind_t do_unwind_) BOOST_NOEXCEPT :
            size( size_),
            do_unwind( do_unwind_),
            preserve_fpu( true)
        {}

        explicit attributes(
                std::size_t size_,
                bool preserve_fpu_) BOOST_NOEXCEPT :
            size( size_),
            do_unwind( stack_unwind),
            preserve_fpu( preserve_fpu_)
        {}

        explicit attributes(
                flag_unwind_t do_unwind_,
                bool preserve_fpu_) BOOST_NOEXCEPT :
            size( ctx::default_stacksize() ),
            do_unwind( do_unwind_),
            preserve_fpu( preserve_fpu_)
        {}
    };

#### `attributes()`

Effects:

  Default constructor using `ctx::default_stacksize()`, does unwind the stack after coroutine/generator is complete and preserves FPU registers.

Throws:

  Nothing.

#### `attributes( std::size_t size)`

Effects:

  Argument `size` defines stack size of the inner `context`. Stack unwinding after termination and preserving FPU registers is set by default.

Throws:

  Nothing.

#### `attributes( flag_unwind_t do_unwind)`

Effects:

  Argument `do_unwind` determines if stack will be unwound after termination or not. The default stacksize is used for the inner `context` and FPU registers are preserved.

Throws:

  Nothing.

#### `attributes( bool preserve_fpu)`

Effects:

  Argument `preserve_fpu` determines if FPU register have to be preserved if a `context` switches. THe default stacksize is used for the inner `context` and the stack will be unwound after termination.

Throws:

  Nothing.

#### `attributes( std::size_t size, flag_unwind_t do_unwind)`

Effects:

  Arguments `size` and `do_unwind` are given by the user. FPU registers preserved during each `context` switch.

Throws:

  Nothing.

#### `attributes( std::size_t size, bool preserve_fpu)`

Effects:

  Arguments `size` and `preserve_fpu` are given by the user. The stack is automatically unwound after coroutine/generator terminates.

Throws:

  Nothing.

#### `attributes( flag_unwind_t do_unwind, bool preserve_fpu)`

Effects:

  Arguments `do_unwind` and `preserve_fpu` are given by the user. The stack gets a default value of `ctx::default_stacksize()`.

Throws:

  Nothing.