# Spec StreamIterator
Abstract base class for input and output stream iterators.

Extends | Iter
All Extended | Iter
All Subcl's | InputStreamIterator, OutputStreamIterator
All Impl'd | IteratorAssociatedTypesConcept
Defined in |
Signature | `template <typename TStream, typename TDirection> class Iter<TStream, StreamIterator<TDirection> >;`

## Template Parameters

`TStream` | The StreamConcept to iterate over.
`TDirection` | The iterator direction, one of the DirectionTags.

## Member Function Overview

### Member Functions Inherited From Iter

- `Iter`

## Interface Function Overview

- `void reserveChunk(iter, len, dirTag);`
  Reserve a chunk in the host of the StreamIterator

### Interface Functions Inherited From IteratorAssociatedTypesConcept

- `operator*`
- `value`
- `getValue`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Iter

- `Container`
- `IterComplementConst`
- `IterMakeConst`
- `Spec`

### Interface Metafunctions Inherited From IteratorAssociatedTypesConcept

- `Difference`
- `GetValue`
- `Pointer`
- `Reference`
- `Value`

## Interface Functions Detail

### `void reserveChunk(iter, len, dirTag);`

Reserve a chunk in the host of the StreamIterator

#### Parameters

`iter` | The StreamIterator object to reserve chunks for.
`len` | The length of the chunk to reserve.
`dirTag` | Direction tag, one of Input and Output .

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### Dox Sources

    /*!
     * @class StreamIterator
     *
     * @extends Iter
     *
     * @brief Abstract base class for input and output stream iterators.
     *
     * @signature template <typename TStream, typename TDirection> class
     *            Iter<TStream, StreamIterator<TDirection> >;
     *
     * @tparam TStream The @link StreamConcept @endlink to iterate over.
     * @tparam TDirection The iterator direction, one of the @link DirectionTags
     *                    @endlink.
     *
     * @fn StreamIterator#reserveChunk
     *
     * @brief Reserve a chunk in the host of the StreamIterator
     *
     * @signature void reserveChunk(iter, len, dirTag);
     *
     * @param[in] iter The @link StreamIterator @endlink object to reserve chunks
     *                 for.
     * @param[in] len The length of the chunk to reserve.
     * @param[in] dirTag Direction tag, one of @link DirectionTags#Input Input
     *                   @endlink and @link DirectionTags#Input Output @endlink .
     */