seek
The function template seek
is used by the Iostreams library to perform random access withing a sequence controlled by a Device.
<boost/iostreams/operations.hpp>
<boost/iostreams/seek.hpp>
T
, returning the resulting stream position.
namespace boost { namespace iostreams { template<typename T> std::streampos seek( T&, stream_offset off, std::ios_base::seekdir way, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out ); } } // End namespace boost::io
T | - | A model of one of the Device concepts which allows random access. |
off | - | A stream_offset indicating the number of characters by which the appropriate reading or writing heads should be advanced. The initial position is determined by the parameter way.
|
way | - | Determines the initial position to which the offset off is applied, as follows:
|
which | - | Determines whether the reading head, the writing head or both are repositioned. |
The semantics of seek
depends on the category of T
as follows:
category_of<T>::type | semantics |
---|---|
convertible to istream_tag or ostream_tag |
returns:
|
convertible to streambuf_tag |
returns:
|
convertible to input_seekable but not to output_seekable |
returns t.seek(off, way) |
convertible to output_seekable but not to input_seekable |
returns t.seek(off, way) |
convertible to dual_seekable or to bidirectional_seekable |
returns t.seek(off, way, which) |
convertible to seekable |
returns t.seek(off, way) |
otherwise | compile-time error |
In short:
T
is a standard stream or stream buffer type, delegates to std::basic_streambuf::pubseekoff
or std::basic_streambuf::pubseekpos
, as appropriate.
T
allows only one reading head, delegates to a member function seek
which takes a stream_offset
and a seekdir
but no openmode
.
T
allows random access with two reading heads, delegates to a member function seek
which takes a stream_offset
, a seekdir
and an openmode
.
seek
is a compile-time error.
© Copyright 2008 CodeRage, LLC
© Copyright 2004-2007 Jonathan Turkanis
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)