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
35 template < typename Ch
, class Tr
>
36 class basic_streambuf_locale_saver
39 typedef ::std::basic_streambuf
<Ch
, Tr
> state_type
;
40 typedef ::std::locale aspect_type
;
41 explicit basic_streambuf_locale_saver( state_type
&s
)
42 : s_save_( s
), a_save_( s
.getloc() )
44 basic_streambuf_locale_saver( state_type
&s
, aspect_type
const &a
)
45 : s_save_( s
), a_save_( s
.pubimbue(a
) )
47 ~basic_streambuf_locale_saver()
50 { s_save_
.pubimbue( a_save_
); }
53 aspect_type
const a_save_
;
59 #endif // BOOST_NO_STD_LOCALE
60 #endif // BOOST_ARCHIVE_BASIC_STREAMBUF_LOCALE_SAVER_HPP