/*!
* @concept StreamConcept
*
* @headerfile <seqan/basic.h>
*
* @brief Base concept for streams.
*
* @signature concept StreamConcept;
*
* @mfn StreamConcept#Value
*
* @brief Metafunction for retrieving the value type of a stream.
*
* @signature Value<TStream>::Type;
*
* @tparam TStream The stream type to query for its value type.
*
* @return Type The resulting value type.
*
* @mfn StreamConcept#Size
*
* @brief Metafunction for retrieving the type of a stream.
*
* @signature Size<TStream>::Type;
*
* @tparam TStream The stream type to query for its size type.
*
* @return Type The resulting size type.
*
* @mfn StreamConcept#Position
*
* @brief Metafunction for retrieving the position type of a stream.
*
* @signature Position<TStream>::Type;
*
* @tparam TStream The stream type to query for its position type.
*
* @return Type The resulting position type.
*
* @mfn StreamConcept#DirectionIterator
*
* @brief Return the direction iterator for the given direction.
*
* @signature DirectionIterator<TStream>::Type;
*
* @tparam TStream The stream to query for its direction iterator.
*
* @return Type The resulting direction iterator.
*
* @fn StreamConcept#position
*
* @brief Return current stream position.
*
* @signature TPosition position(stream);
*
* @param[in] stream The stream to query.
*
* @return TPosition Current position in stream, see @link
* StreamConcept#Position Position @endlink.
*
* @fn StreamConcept#setPosition
*
* @brief Set stream position.
*
* @signature void setPosition(stream, pos);
*
* @param[in,out] stream The stream to update
* @param[in] pos The positoin to set.
*
* @fn StreamConcept#atEnd
*
* @brief Return whether stream is at the end.
*
* @signature bool atEnd(stream);
*
* @param[in] stream The stream to check.
*
* @return bool <tt>true</tt> if the file at EOF, <tt>false</tt> otherwise.
*
* @fn StreamConcept#directionIterator
*
* @brief Returns direction iterator for Stream.
*
* @signature TDirIter directionIterator(stream, dirTag);
*
* @param[in] stream The @link StreamConcept @endlink object to compute iterator
* for.
* @param[in] dirTag Direction tag, one of the @link DirectionTags @endlink.
*/