Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/iostreams/imbue.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) | |
2 // (C) Copyright 2003-2007 Jonathan Turkanis | |
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) | |
5 | |
6 // See http://www.boost.org/libs/iostreams for documentation. | |
7 | |
8 #ifndef BOOST_IOSTREAMS_IMBUE_HPP_INCLUDED | |
9 #define BOOST_IOSTREAMS_IMBUE_HPP_INCLUDED | |
10 | |
11 #if defined(_MSC_VER) && (_MSC_VER >= 1020) | |
12 # pragma once | |
13 #endif | |
14 | |
15 #include <boost/config.hpp> // DEDUCED_TYPENAME, MSVC. | |
16 #include <boost/detail/workaround.hpp> | |
17 #include <boost/iostreams/detail/dispatch.hpp> | |
18 #include <boost/iostreams/detail/streambuf.hpp> | |
19 #include <boost/iostreams/detail/wrap_unwrap.hpp> | |
20 #include <boost/iostreams/operations_fwd.hpp> | |
21 #include <boost/mpl/if.hpp> | |
22 | |
23 // Must come last. | |
24 #include <boost/iostreams/detail/config/disable_warnings.hpp> | |
25 | |
26 namespace boost { namespace iostreams { | |
27 | |
28 namespace detail { | |
29 | |
30 // Implementation templates for simulated tag dispatch. | |
31 template<typename T> | |
32 struct imbue_impl; | |
33 | |
34 } // End namespace detail. | |
35 | |
36 template<typename T, typename Locale> | |
37 void imbue(T& t, const Locale& loc) | |
38 { detail::imbue_impl<T>::imbue(detail::unwrap(t), loc); } | |
39 | |
40 namespace detail { | |
41 | |
42 //------------------Definition of imbue_impl----------------------------------// | |
43 | |
44 template<typename T> | |
45 struct imbue_impl | |
46 : mpl::if_< | |
47 is_custom<T>, | |
48 operations<T>, | |
49 imbue_impl< | |
50 BOOST_DEDUCED_TYPENAME | |
51 dispatch< | |
52 T, streambuf_tag, localizable_tag, any_tag | |
53 >::type | |
54 > | |
55 >::type | |
56 { }; | |
57 | |
58 template<> | |
59 struct imbue_impl<any_tag> { | |
60 template<typename T, typename Locale> | |
61 static void imbue(T&, const Locale&) { } | |
62 }; | |
63 | |
64 template<> | |
65 struct imbue_impl<streambuf_tag> { | |
66 template<typename T, typename Locale> | |
67 static void imbue(T& t, const Locale& loc) { t.pubimbue(loc); } | |
68 }; | |
69 | |
70 template<> | |
71 struct imbue_impl<localizable_tag> { | |
72 template<typename T, typename Locale> | |
73 static void imbue(T& t, const Locale& loc) { t.imbue(loc); } | |
74 }; | |
75 | |
76 } // End namespace detail. | |
77 | |
78 } } // End namespaces iostreams, boost. | |
79 | |
80 #include <boost/iostreams/detail/config/enable_warnings.hpp> | |
81 | |
82 #endif // #ifndef BOOST_IOSTREAMS_IMBUE_HPP_INCLUDED |