3rdParty/boost/1.78.0/libs/iostreams/doc/functions/seek.html
seekThe 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>
Repositions one or both heads within the sequence controlled by a given instance of the template parameter T, returning the resulting stream position.
namespaceboost {namespaceiostreams {template<typename[T](#template_params)>
std::streampos[seek](#semantics)( T&,[stream\_offset](positioning.html#synopsis)[off](#function_params), std::ios_base::seekdir[way](#function_params),
std::ios_base::openmode[which](#function_params)=
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:
std::ios_base::beg, the initial position is the begining of the streamstd::ios_base::cur, the initial position is the current positionstd::ios_base::end, the initial position is the end of the stream| | 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: |
t.rdbuf()->pubseekpos(offset_to_position(off)), if way is std::ios_base::beg and off is outside the range of std::streamoff, andt.rdbuf()->pubseekoff(off, way), otherwise|
| convertible to streambuf_tag | returns:
t.pubseekpos(offset_to_position(off)), if way is std::ios_base::beg and off is outside the range of std::streamoff, andt.pubseekoff(off, way), otherwise|
| 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)