/*!
* @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 .
*/