]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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_DETAIL_CONFIG_CODECVT_HPP_INCLUDED | |
9 | #define BOOST_IOSTREAMS_DETAIL_CONFIG_CODECVT_HPP_INCLUDED | |
10 | ||
11 | #include <boost/config.hpp> | |
12 | #include <boost/detail/workaround.hpp> | |
13 | #include <boost/iostreams/detail/config/wide_streams.hpp> | |
14 | #include <cstddef> | |
15 | ||
16 | #if defined(_MSC_VER) | |
17 | # pragma once | |
18 | #endif | |
19 | ||
20 | //------------------Support for codecvt with user-defined state types---------// | |
21 | ||
22 | #if defined(__MSL_CPP__) || defined(__LIBCOMO__) || \ | |
23 | BOOST_WORKAROUND(_STLPORT_VERSION, <= 0x450) \ | |
24 | /**/ | |
25 | # define BOOST_IOSTREAMS_NO_PRIMARY_CODECVT_DEFINITION | |
26 | #endif | |
27 | ||
28 | #if defined(__GLIBCPP__) || defined(__GLIBCXX__) || \ | |
29 | BOOST_WORKAROUND(_STLPORT_VERSION, > 0x450) \ | |
30 | /**/ | |
31 | # define BOOST_IOSTREAMS_EMPTY_PRIMARY_CODECVT_DEFINITION | |
32 | #endif | |
33 | ||
34 | //------------------Check for codecvt ctor taking a reference count-----------// | |
35 | ||
36 | #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) || \ | |
37 | BOOST_WORKAROUND(_STLPORT_VERSION, < 0x461) \ | |
38 | /**/ | |
39 | # define BOOST_IOSTREAMS_NO_CODECVT_CTOR_FROM_SIZE_T | |
40 | #endif | |
41 | ||
42 | //------------------Normalize codecvt::length---------------------------------// | |
43 | ||
44 | #if !defined(__MSL_CPP__) && !defined(__LIBCOMO__) && \ | |
45 | (!defined(BOOST_RWSTD_VER) || BOOST_RWSTD_VER < 0x04010300) && \ | |
46 | (!defined(__MACH__) || !defined(__INTEL_COMPILER)) | |
47 | /**/ | |
48 | # define BOOST_IOSTREAMS_CODECVT_CV_QUALIFIER const | |
49 | #else | |
50 | # define BOOST_IOSTREAMS_CODECVT_CV_QUALIFIER | |
51 | #endif | |
52 | ||
53 | //------------------Check for codecvt::max_length-----------------------------// | |
54 | ||
55 | #if BOOST_WORKAROUND(_STLPORT_VERSION, < 0x461) | |
56 | # define BOOST_IOSTREAMS_NO_CODECVT_MAX_LENGTH | |
57 | #endif | |
58 | ||
59 | //------------------Put mbstate_t and codecvt in std--------------------------// | |
60 | ||
61 | #ifndef BOOST_IOSTREAMS_NO_LOCALE | |
62 | # include <locale> | |
63 | #endif | |
64 | ||
65 | // From Robert Ramey's version of utf8_codecvt_facet. | |
66 | namespace std { | |
67 | ||
68 | #if defined(__LIBCOMO__) | |
69 | using ::mbstate_t; | |
70 | #elif defined(BOOST_DINKUMWARE_STDLIB) && !defined(__BORLANDC__) | |
71 | using ::mbstate_t; | |
72 | #elif defined(__SGI_STL_PORT) | |
73 | #elif defined(BOOST_NO_STDC_NAMESPACE) | |
74 | using ::codecvt; | |
75 | using ::mbstate_t; | |
76 | #endif | |
77 | ||
78 | } // End namespace std. | |
79 | ||
80 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_CODECVT_HPP_INCLUDED |