# Spec Echoer
Outputs tuples of the `echoRepeats` last elements of the input stream.

Extends | Pipe
All Extended | Pipe
Defined in | <seqan/pipe.h>
Signature | `template <typename Input, unsigned ECHO_REPEATS, bool OMIT_FIRST> class Pipe;`

## Template Parameters

`TInput` | The type of the pipeline module this module reads from.
`ECHO_REPEATS` | The tuple length.The tuples contain elements `in[i]in[i-1]...in[i-(echoRepeats-1)]`.
`OMIT_FIRST` | Omit half filled tuples. If `true`, the output stream is `echoRepeats-1` elements shorter than the input stream. If `false`, the lengths are identical and the tuple is 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 `echoRepeats` (i.e. `Tuple<Value<TInput<::Type, echoRepeats>`).

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

#### Dox Sources

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