fix doc example typo
[boost.git] / boost / archive / basic_streambuf_locale_saver.hpp
blob3f587de7200be7b394feeac87e69e902935ce345
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)
6 # pragma once
7 #endif
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 namespace boost{
33 namespace archive{
35 template < typename Ch, class Tr >
36 class basic_streambuf_locale_saver
38 public:
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()
48 { this->restore(); }
49 void restore()
50 { s_save_.pubimbue( a_save_ ); }
51 private:
52 state_type & s_save_;
53 aspect_type const a_save_;
56 } // archive
57 } // boost
59 #endif // BOOST_NO_STD_LOCALE
60 #endif // BOOST_ARCHIVE_BASIC_STREAMBUF_LOCALE_SAVER_HPP