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 | // gcc-2.95's native stringstream is not usable
|
---|
53 | #if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
---|
54 | #define BOOST_FORMAT_IGNORE_STRINGSTREAM
|
---|
55 | #endif
|
---|
56 |
|
---|
57 |
|
---|
58 | // **** Workaround for io streams, stlport and msvc.
|
---|
59 | #ifdef BOOST_IO_NEEDS_USING_DECLARATION
|
---|
60 | namespace boost {
|
---|
61 | using std::char_traits;
|
---|
62 | using std::basic_ostream;
|
---|
63 | namespace io {
|
---|
64 | using std::basic_ostream;
|
---|
65 | namespace detail {
|
---|
66 | using std::basic_ios;
|
---|
67 | using std::basic_ostream;
|
---|
68 | }
|
---|
69 | }
|
---|
70 | #if ! defined(BOOST_NO_STD_LOCALE)
|
---|
71 | using std::locale;
|
---|
72 | namespace io {
|
---|
73 | using std::locale;
|
---|
74 | namespace detail {
|
---|
75 | using std::locale;
|
---|
76 | }
|
---|
77 | }
|
---|
78 | #endif // locale
|
---|
79 | }
|
---|
80 | // -end N.S. boost
|
---|
81 | #endif // needs_using_declaration
|
---|
82 |
|
---|
83 |
|
---|
84 | // *** hide std::locale if it doesnt exist.
|
---|
85 | // this typedef is either std::locale or int, avoids placing ifdefs everywhere
|
---|
86 | namespace boost { namespace io { namespace detail {
|
---|
87 | #if ! defined(BOOST_NO_STD_LOCALE)
|
---|
88 | typedef BOOST_IO_STD locale locale_t;
|
---|
89 | #else
|
---|
90 | typedef int locale_t;
|
---|
91 | #endif
|
---|
92 | } } }
|
---|
93 |
|
---|
94 |
|
---|
95 | // ----------------------------------------------------------------------------
|
---|
96 |
|
---|
97 | #endif // BOOST_FORMAT_MACROS_DEFAULT_HPP
|
---|