98 lines
3.2 KiB
C++
98 lines
3.2 KiB
C++
// -*- C++ -*-
|
|
// ----------------------------------------------------------------------------
|
|
// config_macros.hpp : configuration macros for the format library
|
|
// only BOOST_IO_STD is absolutely needed (it should be 'std::' in general)
|
|
// others are compiler-specific workaround macros used in #ifdef switches
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Copyright Samuel Krempp 2003. Use, modification, and distribution are
|
|
// subject to the Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
// see http://www.boost.org/libs/format for library home page
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#ifndef BOOST_FORMAT_CONFIG_MACROS_HPP
|
|
#define BOOST_FORMAT_CONFIG_MACROS_HPP
|
|
|
|
#include <boost/config.hpp>
|
|
#include <boost/detail/workaround.hpp>
|
|
|
|
// make sure our local macros wont override something :
|
|
#if defined(BOOST_NO_LOCALE_ISDIGIT) || defined(BOOST_OVERLOAD_FOR_NON_CONST) \
|
|
|| defined(BOOST_IO_STD) || defined( BOOST_IO_NEEDS_USING_DECLARATION ) \
|
|
|| defined(BOOST_NO_TEMPLATE_STD_STREAM) \
|
|
|| defined(BOOST_FORMAT_STREAMBUF_DEFINED) || defined(BOOST_FORMAT_OSTREAM_DEFINED)
|
|
#error "boost::format uses a local macro that is already defined."
|
|
#endif
|
|
|
|
// specific workarounds. each header can define BOOS_IO_STD if it
|
|
// needs. (e.g. because of IO_NEEDS_USING_DECLARATION)
|
|
#include <boost/format/detail/workarounds_gcc-2_95.hpp>
|
|
#include <boost/format/detail/workarounds_stlport.hpp>
|
|
|
|
#ifndef BOOST_IO_STD
|
|
# define BOOST_IO_STD ::std::
|
|
#endif
|
|
|
|
#if defined(BOOST_NO_STD_LOCALE) || \
|
|
( BOOST_WORKAROUND(__BORLANDC__, <= 0x564) \
|
|
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x570 ) ) )
|
|
// some future __BORLANDC__ >0x564 versions might not need this
|
|
// 0x570 is Borland's kylix branch
|
|
#define BOOST_NO_LOCALE_ISDIGIT
|
|
#endif
|
|
|
|
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) || BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1300))
|
|
#define BOOST_NO_OVERLOAD_FOR_NON_CONST
|
|
#endif
|
|
|
|
// gcc-2.95's native stringstream is not usable
|
|
#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
|
#define BOOST_FORMAT_IGNORE_STRINGSTREAM
|
|
#endif
|
|
|
|
|
|
// **** Workaround for io streams, stlport and msvc.
|
|
#ifdef BOOST_IO_NEEDS_USING_DECLARATION
|
|
namespace boost {
|
|
using std::char_traits;
|
|
using std::basic_ostream;
|
|
namespace io {
|
|
using std::basic_ostream;
|
|
namespace detail {
|
|
using std::basic_ios;
|
|
using std::basic_ostream;
|
|
}
|
|
}
|
|
#if ! defined(BOOST_NO_STD_LOCALE)
|
|
using std::locale;
|
|
namespace io {
|
|
using std::locale;
|
|
namespace detail {
|
|
using std::locale;
|
|
}
|
|
}
|
|
#endif // locale
|
|
}
|
|
// -end N.S. boost
|
|
#endif // needs_using_declaration
|
|
|
|
|
|
// *** hide std::locale if it doesnt exist.
|
|
// this typedef is either std::locale or int, avoids placing ifdefs everywhere
|
|
namespace boost { namespace io { namespace detail {
|
|
#if ! defined(BOOST_NO_STD_LOCALE)
|
|
typedef BOOST_IO_STD locale locale_t;
|
|
#else
|
|
typedef int locale_t;
|
|
#endif
|
|
} } }
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#endif // BOOST_FORMAT_MACROS_DEFAULT_HPP
|