|
Boost : |
From: Steve Nutt (Steve.Nutt_at_[hidden])
Date: 2007-10-15 00:37:30
I've created a device with the boost::iostreams::dual_seekable category
to use with the boost::iostreams::stream class, but I'm having trouble
implementing seek.
When I call seekp on the stream, seek on my device is called with a
which (openmode) of both BOOST_IOS::in and BOOST_IOS::out. I would have
expected for a call to seekp the which parameter in the seek call on my
device would be BOOST_IOS::out, and calling seekg would set which to
BOOST_IOS::in.
The following code in
boost\iostream\detail\streambuf\indirect_streambuf.hpp ignores the which
argument passed and passes on through both in and out.
template<typename T, typename Tr, typename Alloc, typename Mode>
inline typename indirect_streambuf<T, Tr, Alloc, Mode>::pos_type
indirect_streambuf<T, Tr, Alloc, Mode>::seekpos
(pos_type sp, BOOST_IOS::openmode)
{
return seek_impl( position_to_offset(sp), BOOST_IOS::beg,
BOOST_IOS::in | BOOST_IOS::out );
}
Is this correct, and if so how do I implement seeking when using a dual
head device?
Many thanks,
Steve Nutt
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk