]>
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__) || \ | |
b32b8144 FG |
23 | BOOST_WORKAROUND(_STLPORT_VERSION, <= 0x450) || \ |
24 | defined(_LIBCPP_VERSION) \ | |
7c673cae FG |
25 | /**/ |
26 | # define BOOST_IOSTREAMS_NO_PRIMARY_CODECVT_DEFINITION | |
27 | #endif | |
28 | ||
29 | #if defined(__GLIBCPP__) || defined(__GLIBCXX__) || \ | |
30 | BOOST_WORKAROUND(_STLPORT_VERSION, > 0x450) \ | |
31 | /**/ | |
32 | # define BOOST_IOSTREAMS_EMPTY_PRIMARY_CODECVT_DEFINITION | |
33 | #endif | |
34 | ||
35 | //------------------Check for codecvt ctor taking a reference count-----------// | |
36 | ||
37 | #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) || \ | |
38 | BOOST_WORKAROUND(_STLPORT_VERSION, < 0x461) \ | |
39 | /**/ | |
40 | # define BOOST_IOSTREAMS_NO_CODECVT_CTOR_FROM_SIZE_T | |
41 | #endif | |
42 | ||
43 | //------------------Normalize codecvt::length---------------------------------// | |
44 | ||
92f5a8d4 | 45 | #if !defined(__MSL_CPP__) && !defined(__LIBCOMO__) && !defined(__clang__) && \ |
7c673cae FG |
46 | (!defined(BOOST_RWSTD_VER) || BOOST_RWSTD_VER < 0x04010300) && \ |
47 | (!defined(__MACH__) || !defined(__INTEL_COMPILER)) | |
48 | /**/ | |
49 | # define BOOST_IOSTREAMS_CODECVT_CV_QUALIFIER const | |
50 | #else | |
51 | # define BOOST_IOSTREAMS_CODECVT_CV_QUALIFIER | |
52 | #endif | |
53 | ||
54 | //------------------Check for codecvt::max_length-----------------------------// | |
55 | ||
56 | #if BOOST_WORKAROUND(_STLPORT_VERSION, < 0x461) | |
57 | # define BOOST_IOSTREAMS_NO_CODECVT_MAX_LENGTH | |
58 | #endif | |
59 | ||
60 | //------------------Put mbstate_t and codecvt in std--------------------------// | |
61 | ||
62 | #ifndef BOOST_IOSTREAMS_NO_LOCALE | |
63 | # include <locale> | |
64 | #endif | |
65 | ||
66 | // From Robert Ramey's version of utf8_codecvt_facet. | |
67 | namespace std { | |
68 | ||
69 | #if defined(__LIBCOMO__) | |
70 | using ::mbstate_t; | |
71 | #elif defined(BOOST_DINKUMWARE_STDLIB) && !defined(__BORLANDC__) | |
72 | using ::mbstate_t; | |
73 | #elif defined(__SGI_STL_PORT) | |
74 | #elif defined(BOOST_NO_STDC_NAMESPACE) | |
75 | using ::codecvt; | |
76 | using ::mbstate_t; | |
77 | #endif | |
78 | ||
79 | } // End namespace std. | |
80 | ||
81 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_CODECVT_HPP_INCLUDED |