1 #ifndef BOOST_ARCHIVE_BASIC_STREAMBUF_LOCALE_SAVER_HPP
2 #define BOOST_ARCHIVE_BASIC_STREAMBUF_LOCALE_SAVER_HPP
4 // MS compatible compilers support #pragma once
5 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
9 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
10 // basic_streambuf_local_saver.hpp
12 // (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
14 // Use, modification and distribution is subject to the Boost Software
15 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
16 // http://www.boost.org/LICENSE_1_0.txt)
18 // See http://www.boost.org for updates, documentation, and revision history.
20 // note derived from boost/io/ios_state.hpp
21 // Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
22 // are subject to the Boost Software License, Version 1.0. (See accompanying
23 // file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
25 // See <http://www.boost.org/libs/io/> for the library's home page.
27 #ifndef BOOST_NO_STD_LOCALE
29 #include <locale> // for std::locale
30 #include <streambuf> // for std::basic_streambuf
32 #include <boost/config.hpp>
33 #include <boost/noncopyable.hpp>
36 # pragma warning(push)
37 # pragma warning(disable : 4511 4512)
43 template < typename Ch, class Tr >
44 class basic_streambuf_locale_saver :
45 private boost::noncopyable
48 typedef ::std::basic_streambuf<Ch, Tr> state_type;
49 typedef ::std::locale aspect_type;
50 explicit basic_streambuf_locale_saver( state_type &s )
51 : s_save_( s ), a_save_( s.getloc() )
53 basic_streambuf_locale_saver( state_type &s, aspect_type const &a )
54 : s_save_( s ), a_save_( s.pubimbue(a) )
56 ~basic_streambuf_locale_saver()
59 { s_save_.pubimbue( a_save_ ); }
62 aspect_type const a_save_;
72 #endif // BOOST_NO_STD_LOCALE
73 #endif // BOOST_ARCHIVE_BASIC_STREAMBUF_LOCALE_SAVER_HPP