# Spec Tupler
Outputs tuples of the `SIZE` consecutive elements of the input stream.

Extends | Pipe
All Extended | Pipe
Defined in | <seqan/pipe.h>
Signature | `template <typename TInput, unsigned TUPLE_LEN, bool OMIT_LAST> class Pipe<TInput, Tupler<TUPLE_LEN, OMIT_LAST> >;`

## Template Parameters

`TInput` | The type of the pipeline module this module reads from.
`TUPLE_LEN` | The tuple length.The tuples contain elements `in[i]in[i+1]...in[i+(SIZE-1)]`.
`OMIT_LAST` | Omit half filled tuples. If `true`, the output stream is `SIZE-1` elements shorter than the input stream. If `false`, the lengths are identical and the last tuples are filled with blanks (default constructed elements) for undefined entries.

## Member Function Overview

### Member Functions Inherited From Pipe

- `Pipe`

## Interface Function Overview

### Interface Functions Inherited From Pipe

- `assign`
- `atEnd`
- `beginRead`
- `endRead`
- `front`
- `length`
- `pop`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Pipe

- `Size`
- `Value`

## Detailed Description

The output type is a Tuple of input elements and length `SIZE` (i.e. `Tuple<Value<TInput>::Type, TUPLE_LEN>`).

The tuples are sequences of the form `in[i]in[i-1]in[i-2]..in[i-SIZE+1]`. For `omitLast=false` `i` begins with 0 and for `omitLast=true` `i` begins with `SIZE-1`.

#### Dox Sources

    /*!
     * @class Tupler
     *
     * @extends Pipe
     *
     * @headerfile <seqan/pipe.h>
     *
     * @brief Outputs tuples of the <tt>SIZE</tt> consecutive elements of the input
     *        stream.
     *
     * @signature template <typename TInput, unsigned TUPLE_LEN, bool OMIT_LAST>
     *            class Pipe<TInput, Tupler<TUPLE_LEN, OMIT_LAST> >;
     *
     * @tparam TInput The type of the pipeline module this module reads from.
     * @tparam TUPLE_LEN The tuple length.The tuples contain elements
     *                   <tt>in[i]in[i+1]...in[i+(SIZE-1)]</tt>.
     * @tparam OMIT_LAST Omit half filled tuples. If <tt>true</tt>, the output
     *                   stream is <tt>SIZE-1</tt> elements shorter than the input
     *                   stream. If <tt>false</tt>, the lengths are identical and
     *                   the last tuples are filled with blanks (default constructed
     *                   elements) for undefined entries.
     *
     * The output type is a @link Tuple @endlink of input elements and length
     * <tt>SIZE</tt> (i.e. <tt>Tuple&lt;Value&lt;TInput&gt;::Type,
     * TUPLE_LEN&gt;</tt>).
     *
     * The tuples are sequences of the form
     * <tt>in[i]in[i-1]in[i-2]..in[i-SIZE+1]</tt>. For <tt>omitLast=false</tt>
     * <tt>i</tt> begins with 0 and for <tt>omitLast=true</tt> <tt>i</tt> begins
     * with <tt>SIZE-1</tt>.
     */