diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/iostreams/positioning.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/iostreams/positioning.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,102 @@ +// (C) Copyright Jonathan Turkanis 2003. +// 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.) + +// See http://www.boost.org/libs/iostreams for documentation. + +// Thanks to Gareth Sylvester-Bradley for the Dinkumware versions of the +// positioning functions. + +#ifndef BOOST_IOSTREAMS_POSITIONING_HPP_INCLUDED +#define BOOST_IOSTREAMS_POSITIONING_HPP_INCLUDED + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +#include +#include +#include +#include // mbstate_t. +#include // streamoff, streampos. + +// Must come last. +#include + +#ifdef BOOST_NO_STDC_NAMESPACE +namespace std { using ::fpos_t; } +#endif + +namespace boost { namespace iostreams { + +typedef boost::intmax_t stream_offset; + +inline std::streamoff stream_offset_to_streamoff(stream_offset off) +{ return static_cast(off); } + +template // Hande custom pos_type's. +inline stream_offset position_to_offset(PosType pos) +{ return std::streamoff(pos); } + +#if ((defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)) && \ + !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) \ + && !defined(__QNX__) \ + /**/ + + /* Dinkumware */ + +inline std::streampos offset_to_position(stream_offset off) +{ + // Use implementation-specific constructor. + return std::streampos(std::mbstate_t(), off); +} + +inline stream_offset fpos_t_to_offset(std::fpos_t pos) +{ // Helper function. +#if defined(_POSIX_) || (_INTEGRAL_MAX_BITS >= 64) + return pos; +#else + return _FPOSOFF(pos); +#endif +} + +# if defined(_CPPLIB_VER) //--------------------------------------------------// + + /* Recent Dinkumware */ + +inline stream_offset position_to_offset(std::streampos pos) +{ + // Use implementation-specific member function seekpos(). + return fpos_t_to_offset(pos.seekpos()) + + stream_offset(std::streamoff(pos)) - + stream_offset(std::streamoff(pos.seekpos())); +} + +# else // # if defined(_CPPLIB_VER) //----------------------------------------// + + /* Old Dinkumware */ + +inline stream_offset position_to_offset(std::streampos pos) +{ + // use implementation-specific member function get_fpos_t(). + return fpos_t_to_offset(pos.get_fpos_t()) + + stream_offset(std::streamoff(pos)) - + stream_offset(std::streamoff(pos.get_fpos_t())); +} + +# endif // # if defined(_CPPLIB_VER) //---------------------------------------// +#else // Dinkumware //--------------------------------------------------------// + + /* Non-Dinkumware */ + +inline std::streampos offset_to_position(stream_offset off) { return off; } + +inline stream_offset position_to_offset(std::streampos pos) { return pos; } + +#endif // Dinkumware //-------------------------------------------------------// + +} } // End namespaces iostreams, boost. + +#include + +#endif // #ifndef BOOST_IOSTREAMS_POSITIONING_HPP_INCLUDED