]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // -*- C++ -*- |
2 | // ---------------------------------------------------------------------------- | |
3 | // config_macros.hpp : configuration macros for the format library | |
4 | // only BOOST_IO_STD is absolutely needed (it should be 'std::' in general) | |
5 | // others are compiler-specific workaround macros used in #ifdef switches | |
6 | // ---------------------------------------------------------------------------- | |
7 | ||
8 | // Copyright Samuel Krempp 2003. Use, modification, and distribution are | |
9 | // subject to the Boost Software License, Version 1.0. (See accompanying | |
10 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
11 | ||
12 | // see http://www.boost.org/libs/format for library home page | |
13 | ||
14 | ||
15 | // ---------------------------------------------------------------------------- | |
16 | ||
17 | #ifndef BOOST_FORMAT_CONFIG_MACROS_HPP | |
18 | #define BOOST_FORMAT_CONFIG_MACROS_HPP | |
19 | ||
20 | #include <boost/config.hpp> | |
21 | #include <boost/detail/workaround.hpp> | |
22 | ||
23 | // make sure our local macros wont override something : | |
24 | #if defined(BOOST_NO_LOCALE_ISDIGIT) || defined(BOOST_OVERLOAD_FOR_NON_CONST) \ | |
25 | || defined(BOOST_IO_STD) || defined( BOOST_IO_NEEDS_USING_DECLARATION ) \ | |
26 | || defined(BOOST_NO_TEMPLATE_STD_STREAM) \ | |
27 | || defined(BOOST_FORMAT_STREAMBUF_DEFINED) || defined(BOOST_FORMAT_OSTREAM_DEFINED) | |
28 | #error "boost::format uses a local macro that is already defined." | |
29 | #endif | |
30 | ||
31 | // specific workarounds. each header can define BOOS_IO_STD if it | |
32 | // needs. (e.g. because of IO_NEEDS_USING_DECLARATION) | |
33 | #include <boost/format/detail/workarounds_gcc-2_95.hpp> | |
34 | #include <boost/format/detail/workarounds_stlport.hpp> | |
35 | ||
36 | #ifndef BOOST_IO_STD | |
37 | # define BOOST_IO_STD ::std:: | |
38 | #endif | |
39 | ||
40 | #if defined(BOOST_NO_STD_LOCALE) || \ | |
41 | ( BOOST_WORKAROUND(__BORLANDC__, <= 0x564) \ | |
42 | || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x570 ) ) ) | |
43 | // some future __BORLANDC__ >0x564 versions might not need this | |
44 | // 0x570 is Borland's kylix branch | |
45 | #define BOOST_NO_LOCALE_ISDIGIT | |
46 | #endif | |
47 | ||
48 | #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) || BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1300)) | |
49 | #define BOOST_NO_OVERLOAD_FOR_NON_CONST | |
50 | #endif | |
51 | ||
52 | // **** Workaround for io streams, stlport and msvc. | |
53 | #ifdef BOOST_IO_NEEDS_USING_DECLARATION | |
54 | namespace boost { | |
55 | using std::char_traits; | |
56 | using std::basic_ostream; | |
57 | namespace io { | |
58 | using std::basic_ostream; | |
59 | namespace detail { | |
60 | using std::basic_ios; | |
61 | using std::basic_ostream; | |
62 | } | |
63 | } | |
64 | #if ! defined(BOOST_NO_STD_LOCALE) | |
65 | using std::locale; | |
66 | namespace io { | |
67 | using std::locale; | |
68 | namespace detail { | |
69 | using std::locale; | |
70 | } | |
71 | } | |
72 | #endif // locale | |
73 | } | |
74 | // -end N.S. boost | |
75 | #endif // needs_using_declaration | |
76 | ||
77 | #if ! defined(BOOST_NO_STD_LOCALE) | |
78 | #include <locale> | |
79 | #endif | |
80 | ||
81 | ||
82 | // *** hide std::locale if it doesnt exist. | |
83 | // this typedef is either std::locale or int, avoids placing ifdefs everywhere | |
84 | namespace boost { namespace io { namespace detail { | |
85 | #if ! defined(BOOST_NO_STD_LOCALE) | |
86 | typedef BOOST_IO_STD locale locale_t; | |
87 | #else | |
88 | typedef int locale_t; | |
89 | #endif | |
90 | } } } | |
91 | ||
92 | ||
93 | // ---------------------------------------------------------------------------- | |
94 | ||
95 | #endif // BOOST_FORMAT_MACROS_DEFAULT_HPP |