forked from boostorg/config
Compare commits
1 Commits
boost-1.25
...
boost-1.18
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19aee44c15 |
1284
config.htm
1284
config.htm
File diff suppressed because it is too large
Load Diff
115
config_test.cpp
Normal file
115
config_test.cpp
Normal file
@@ -0,0 +1,115 @@
|
||||
// Boost config.hpp configuration test program file ------------------------------//
|
||||
|
||||
// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for the most recent version.
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <iostream>
|
||||
|
||||
using std::cout;
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
# ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
cout << "BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZER
|
||||
cout << "BOOST_NO_INCLASS_MEMBER_INITIALIZER defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_MEMBER_TEMPLATES
|
||||
cout << "BOOST_NO_MEMBER_TEMPLATES defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
cout << "BOOST_NO_MEMBER_TEMPLATE_FRIENDS defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
cout << "BOOST_NO_OPERATORS_IN_NAMESPACE defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_STD_ITERATOR
|
||||
cout << "BOOST_NO_STD_ITERATOR defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_STD_ITERATOR_TRAITS
|
||||
cout << "BOOST_NO_STD_ITERATOR_TRAITS defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||
cout << "BOOST_NO_STDC_NAMESPACE defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
cout << "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_NO_USING_TEMPLATE
|
||||
cout << "BOOST_NO_USING_TEMPLATE defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_DECL_EXPORTS
|
||||
cout << "BOOST_DECL_EXPORTS defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_SYSTEM_HAS_STDINT_H
|
||||
cout << "BOOST_SYSTEM_HAS_STDINT_H defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef __GNUC__
|
||||
cout << "__GNUC__ defined as " << __GNUC__ << "\n";
|
||||
# endif
|
||||
|
||||
# ifdef __BORLANDC__
|
||||
cout << "__BORLANDC__ defined as " << __BORLANDC__ << "\n";
|
||||
# endif
|
||||
|
||||
# ifdef __MWERKS__
|
||||
cout << "__MWERKS__ defined as " << __MWERKS__ << "\n";
|
||||
# endif
|
||||
|
||||
# ifdef __SUNPRO_CC
|
||||
cout << "__SUNPRO_CC defined as " << __SUNPRO_CC << "\n";
|
||||
# endif
|
||||
|
||||
# ifdef _MSC_VER
|
||||
cout << "_MSC_VER defined as " << _MSC_VER << "\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_MSVC
|
||||
cout << "BOOST_MSVC defined as " << BOOST_MSVC << "\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
cout << "BOOST_MSVC6_MEMBER_TEMPLATES defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef BOOST_MSVC_STD_ITERATOR
|
||||
cout << "BOOST_MSVC_STD_ITERATOR defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef __SGI_STL_PORT
|
||||
cout << "__SGI_STL_PORT defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef __STL_NO_NAMESPACES
|
||||
cout << "__STL_NO_NAMESPACES defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef __STL_USE_NAMESPACES
|
||||
cout << "__STL_USE_NAMESPACES defined\n";
|
||||
# endif
|
||||
|
||||
# ifdef __STL_IMPORT_VENDOR_CSTD
|
||||
cout << "__STL_IMPORT_VENDOR_CSTD defined\n";
|
||||
# endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
// Boost config.hpp configuration header file ------------------------------//
|
||||
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
@@ -9,61 +9,386 @@
|
||||
|
||||
// Boost config.hpp policy and rationale documentation has been moved to
|
||||
// http://www.boost.org/libs/config
|
||||
//
|
||||
// CAUTION: This file is intended to be completely stable -
|
||||
// DO NOT MODIFY THIS FILE!
|
||||
//
|
||||
|
||||
// Revision History (excluding minor changes for specific compilers)
|
||||
// 4 Oct 00 BOOST_NO_STD_MIN_MAX (Jeremy Siek)
|
||||
// 29 Sep 00 BOOST_NO_INTEGRAL_INT64_T (Jens Maurer)
|
||||
// 25 Sep 00 BOOST_NO_STD_ALLOCATOR (Jeremy Siek)
|
||||
// 18 SEP 00 BOOST_NO_SLIST, BOOST_NO_HASH,
|
||||
// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
// BOOST_NO_LIMITS (Jeremy Siek)
|
||||
// 1 Sep 00 BOOST_NO_PRIVATE_IN_AGGREGATE added. (Mark Rodgers)
|
||||
// 23 Jul 00 Fixed spelling of BOOST_NO_INCLASS_MEMBER_INITIALIZATION in
|
||||
// comment (Dave Abrahams).
|
||||
// 10 Jul 00 BOOST_NO_POINTER_TO_MEMBER_CONST added (Mark Rodgers)
|
||||
// 26 Jun 00 BOOST_NO_STD_ITERATOR, BOOST_MSVC_STD_ITERATOR,
|
||||
// BOOST_NO_STD_ITERATOR_TRAITS, BOOST_NO_USING_TEMPLATE,
|
||||
// added (Jeremy Siek)
|
||||
// 20 Jun 00 BOOST_MSVC added (Aleksey Gurtovoy)
|
||||
// 14 Jun 00 BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS (Jens M.)
|
||||
// 22 Mar 00 BOOST_MSVC6_MEMBER_TEMPLATES added (Dave Abrahams)
|
||||
// 18 Feb 00 BOOST_NO_INCLASS_MEMBER_INITIALIZATION added (Jens Maurer)
|
||||
// 26 Jan 00 Borland compiler support added (John Maddock)
|
||||
// 26 Jan 00 Sun compiler support added (Jörg Schaible)
|
||||
// 30 Dec 99 BOOST_NMEMBER_TEMPLATES compatibility moved here from
|
||||
// smart_ptr.hpp. (Dave Abrahams)
|
||||
// 15 Nov 99 BOOST_NO_OPERATORS_IN_NAMESPACE,
|
||||
// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION added (Beman Dawes)
|
||||
// 11 Oct 99 BOOST_NO_STDC_NAMESPACE refined; <cstddef> supplied
|
||||
// 29 Sep 99 BOOST_NO_STDC_NAMESPACE added (Ed Brey)
|
||||
// 24 Sep 99 BOOST_DECL added (Ed Brey)
|
||||
// 10 Aug 99 Endedness flags added, GNU CC support added
|
||||
// 22 Jul 99 Initial version
|
||||
|
||||
|
||||
#ifndef BOOST_CONFIG_HPP
|
||||
#define BOOST_CONFIG_HPP
|
||||
|
||||
// if we don't have a user config, then use the default location:
|
||||
#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
|
||||
# define BOOST_USER_CONFIG <boost/config/user.hpp>
|
||||
#endif
|
||||
// include it first:
|
||||
#ifdef BOOST_USER_CONFIG
|
||||
# include BOOST_USER_CONFIG
|
||||
#endif
|
||||
// Conformance Flag Macros -------------------------------------------------//
|
||||
//
|
||||
// Conformance flag macros should identify the absence of C++ Standard
|
||||
// conformance rather than its presence. This ensures that standard conforming
|
||||
// compilers do not require a lot of configuration flag macros. It places the
|
||||
// burden where it should be, on non-conforming compilers. In the future,
|
||||
// hopefully, less rather than more conformance flags will have to be defined.
|
||||
|
||||
// if we don't have a compiler config set, try and find one:
|
||||
#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
|
||||
# include <boost/config/select_compiler_config.hpp>
|
||||
#endif
|
||||
// if we don't have a std library config set, try and find one:
|
||||
#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG)
|
||||
# include <boost/config/select_stdlib_config.hpp>
|
||||
#endif
|
||||
// if we don't have a platform config set, try and find one:
|
||||
#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
|
||||
# include <boost/config/select_platform_config.hpp>
|
||||
#endif
|
||||
// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS: Template value
|
||||
// parameters cannot have a dependent type, for example
|
||||
// "template<class T, typename T::type value> class X { ... };"
|
||||
|
||||
// BOOST_NO_INCLASS_MEMBER_INITIALIZATION: Compiler violates std::9.4.2/4.
|
||||
|
||||
// BOOST_NO_INTEGRAL_INT64_T: int64_t as defined by <boost/cstdint.hpp> is
|
||||
// not an integral type.
|
||||
|
||||
// BOOST_NO_MEMBER_TEMPLATES: Member template functions not fully supported.
|
||||
// Also see BOOST_MSVC6_MEMBER_TEMPLATES in the Compiler Control section below.
|
||||
|
||||
// BOOST_NO_MEMBER_TEMPLATE_FRIENDS: Member template friend syntax
|
||||
// ("template<class P> friend class frd;") described in the C++ Standard,
|
||||
// 14.5.3, not supported.
|
||||
|
||||
// BOOST_NO_OPERATORS_IN_NAMESPACE: Compiler requires inherited operator
|
||||
// friend functions to be defined at namespace scope, then using'ed to boost.
|
||||
// Probably GCC specific. See boost/operators.hpp for example.
|
||||
|
||||
// BOOST_NO_POINTER_TO_MEMBER_CONST: The compiler does not correctly handle
|
||||
// pointers to const member functions, preventing use of these in overloaded
|
||||
// function templates. See boost/functional.hpp for example.
|
||||
|
||||
// BOOST_NO_PRIVATE_IN_AGGREGATE: The compiler misreads 8.5.1, treating classes
|
||||
// as non-aggregate if they contain private or protected member functions.
|
||||
|
||||
// BOOST_NO_STD_ITERATOR: The C++ implementation fails to provide the
|
||||
// std::iterator class.
|
||||
|
||||
// BOOST_NO_STD_ITERATOR_TRAITS: The compiler does not provide a standard
|
||||
// compliant implementation of std::iterator_traits. Note that
|
||||
// the compiler may still have a non-standard implementation.
|
||||
|
||||
// BOOST_NO_STDC_NAMESPACE: The contents of C++ standard headers for C library
|
||||
// functions (the <c...> headers) have not been placed in namespace std.
|
||||
// Because the use of std::size_t is so common, a specific workaround for
|
||||
// <cstddef> (and thus std::size_t) is provided in this header (see below).
|
||||
// For other <c...> headers, a workaround must be provided in the boost header:
|
||||
//
|
||||
// #include <cstdlib> // for abs
|
||||
// #ifdef BOOST_NO_STDC_NAMESPACE
|
||||
// namespace std { using ::abs; }
|
||||
// #endif
|
||||
|
||||
// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION. Class template partial
|
||||
// specialization (14.5.4 [temp.class.spec]) not supported.
|
||||
|
||||
// BOOST_NO_USING_TEMPLATE: The compiler will not accept a using declaration
|
||||
// that imports a template from the global namespace into a named namespace.
|
||||
// Probably Borland specific.
|
||||
|
||||
// Compiler Control or Information Macros ----------------------------------//
|
||||
//
|
||||
// Compilers often supply features outside of the C++ Standard which need to be
|
||||
// controlled or detected. As usual, reasonable default behavior should occur
|
||||
// if any of these macros are not defined.
|
||||
|
||||
// BOOST_DECL: Certain compilers for Microsoft operating systems require
|
||||
// non-standard class and function decoration if dynamic load library linking
|
||||
// is desired. BOOST_DECL supplies that decoration, defaulting to a nul string
|
||||
// so that it is harmless when not required. Boost does not encourage the use
|
||||
// of BOOST_DECL - it is non-standard and to be avoided if practical to do so.
|
||||
|
||||
// BOOST_DECL_EXPORTS: User defined, BOOST_DECL_EXPORTS causes BOOST_DECL to
|
||||
// be defined as __declspec(dllexport) rather than __declspec(dllimport).
|
||||
|
||||
// BOOST_MSVC6_MEMBER_TEMPLATES: Microsoft Visual C++ 6.0 has enough member
|
||||
// template idiosyncrasies (being polite) that BOOST_NO_MEMBER_TEMPLATES is
|
||||
// defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow
|
||||
// compiler specific workarounds.
|
||||
|
||||
// BOOST_MSVC: defined as _MSC_VER for the Microsoft compiler only. In general,
|
||||
// boost headers should test for a specific conformance flag macro (for
|
||||
// example, BOOST_NO_MEMBER_TEMPLATE_FRIENDS) rather than a specific compiler.
|
||||
// VC++ is a special case, however, since many libraries try to support it yet
|
||||
// it has so many conformance issues that sometimes it is just easier to test
|
||||
// for it directly. On the other hand, the obvious way to do this doesn't work,
|
||||
// as many non-Microsoft compilers define _MSC_VER. Thus BOOST_MSVC.
|
||||
|
||||
// BOOST_MSVC_STD_ITERATOR: Microsoft's broken version of std::iterator
|
||||
// is being used.
|
||||
|
||||
// BOOST_SYSTEM_HAS_STDINT_H: There are no 1998 C++ Standard headers <stdint.h>
|
||||
// or <cstdint>, although the 1999 C Standard does include <stdint.h>.
|
||||
// If <stdint.h> is present, <boost/stdint.h> can make good use of it,
|
||||
// so a flag is supplied (signalling presence; thus the default is not
|
||||
// present, conforming to the current C++ standard).
|
||||
|
||||
// BOOST_NO_SLIST: The C++ implementation does not provide the slist class.
|
||||
|
||||
// BOOST_NO_HASH: The C++ implementation does not provide the hash_set
|
||||
// or hash_map classes.
|
||||
|
||||
// BOOST_STD_EXTENSION_NAMESPACE: The name of the namespace in which the slist,
|
||||
// hash_set and/or hash_map templates are defined in this implementation (if any).
|
||||
|
||||
// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS: The standard library does not provide
|
||||
// templated iterator constructors for its containers.
|
||||
|
||||
// BOOST_NO_LIMITS: The C++ implementation does not provide the <limits> header.
|
||||
|
||||
// BOOST_NO_INTRINSIC_WCHAR_T: The C++ implementation does not provide wchar_t,
|
||||
// or it is really a synonym for another integral type. Use this symbol to
|
||||
// decide whether it is appropriate to explicitly specialize a template on
|
||||
// wchar_t if there is already a specialization for other integer types.
|
||||
|
||||
// BOOST_NO_STD_ALLOCATOR: The C++ standard library does not provide
|
||||
// a standards conforming std::allocator.
|
||||
|
||||
// BOOST_NO_STD_MIN_MAX: The C++ standard library does not provide
|
||||
// the min() and max() template functions that should be in <algorithm>.
|
||||
|
||||
// Compilers are listed in alphabetic order (except VC++ last - see below)---//
|
||||
|
||||
// GNU CC (also known as GCC and G++) --------------------------------------//
|
||||
|
||||
# if defined __GNUC__
|
||||
# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95
|
||||
# include <iterator> // not sure this is the right way to do this -JGS
|
||||
# if !defined(_CXXRT_STD) && !defined(__SGI_STL) // need to ask Dietmar about this -JGS
|
||||
# define BOOST_NO_STD_ITERATOR
|
||||
# define BOOST_NO_LIMITS
|
||||
# endif
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
# endif
|
||||
# if __GNUC__ == 2 && __GNUC_MINOR__ <= 8
|
||||
# define BOOST_NO_MEMBER_TEMPLATES
|
||||
# endif
|
||||
|
||||
// Kai C++ ------------------------------------------------------------------//
|
||||
|
||||
#elif defined __KCC
|
||||
# define BOOST_NO_SLIST
|
||||
# define BOOST_NO_HASH
|
||||
|
||||
// Greenhills C++ -----------------------------------------------------------//
|
||||
|
||||
#elif defined __ghs
|
||||
# define BOOST_NO_SLIST
|
||||
# define BOOST_NO_HASH
|
||||
|
||||
// Borland ------------------------------------------------------------------//
|
||||
|
||||
#elif defined __BORLANDC__
|
||||
# define BOOST_NO_SLIST
|
||||
# define BOOST_NO_HASH
|
||||
# if __BORLANDC__ <= 0x0551
|
||||
# define BOOST_NO_INTEGRAL_INT64_T
|
||||
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
# endif
|
||||
# if __BORLANDC__ <= 0x0550
|
||||
// Borland C++ Builder 4 and 5:
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_USING_TEMPLATE
|
||||
# if __BORLANDC__ == 0x0550
|
||||
// Borland C++ Builder 5, command-line compiler 5.5:
|
||||
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
# endif
|
||||
# endif
|
||||
# if defined BOOST_DECL_EXPORTS
|
||||
# define BOOST_DECL __declspec(dllexport)
|
||||
# else
|
||||
# define BOOST_DECL __declspec(dllimport)
|
||||
# endif
|
||||
|
||||
// Intel -------------------------------------------------------------------//
|
||||
|
||||
# elif defined __ICL
|
||||
# include <iterator> // not sure this is the right way to do this -JGS
|
||||
# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES)
|
||||
// a perfectly good implementation of std::iterator is supplied
|
||||
# elif defined(__SGI_STL_ITERATOR)
|
||||
# define BOOST_NO_STD_ITERATOR // No std::iterator in this case
|
||||
# else // assume using dinkumware's STL that comes with VC++ 6.0
|
||||
# define BOOST_MSVC_STD_ITERATOR
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# define BOOST_NO_SLIST
|
||||
# define BOOST_NO_HASH
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
# define BOOST_NO_STD_MIN_MAX
|
||||
# endif
|
||||
|
||||
|
||||
// if we have a compiler config, include it now:
|
||||
#ifdef BOOST_COMPILER_CONFIG
|
||||
# include BOOST_COMPILER_CONFIG
|
||||
#endif
|
||||
// if we have a std library config, include it now:
|
||||
#ifdef BOOST_STDLIB_CONFIG
|
||||
# include BOOST_STDLIB_CONFIG
|
||||
#endif
|
||||
// if we have a platform config, include it now:
|
||||
#ifdef BOOST_PLATFORM_CONFIG
|
||||
# include BOOST_PLATFORM_CONFIG
|
||||
// Metrowerks CodeWarrior --------------------------------------------------//
|
||||
|
||||
# elif defined __MWERKS__
|
||||
# if __MWERKS__ <= 0x4000
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# endif
|
||||
# if __MWERKS__ <= 0x2301
|
||||
# define BOOST_NO_POINTER_TO_MEMBER_CONST
|
||||
# endif
|
||||
# if __MWERKS__ >= 0x2300
|
||||
# define BOOST_SYSTEM_HAS_STDINT_H
|
||||
# endif
|
||||
# if defined BOOST_DECL_EXPORTS
|
||||
# define BOOST_DECL __declspec(dllexport)
|
||||
# else
|
||||
# define BOOST_DECL __declspec(dllimport)
|
||||
# endif
|
||||
|
||||
# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
|
||||
|
||||
// Sun Workshop Compiler C++ ------------------------------------------------//
|
||||
|
||||
# elif defined __SUNPRO_CC
|
||||
# if __SUNPRO_CC <= 0x500
|
||||
# define BOOST_NO_MEMBER_TEMPLATES
|
||||
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
# endif
|
||||
|
||||
// Microsoft Visual C++ (excluding Intel/EDG front end) --------------------//
|
||||
//
|
||||
// Must remain the last #elif since some other vendors (Metrowerks, for
|
||||
// example) also #define _MSC_VER
|
||||
|
||||
# elif defined _MSC_VER
|
||||
# define BOOST_MSVC _MSC_VER
|
||||
|
||||
// turn off the warnings before we #include anything
|
||||
# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
|
||||
# pragma warning( disable : 4503 ) // warning: decorated name length exceeded
|
||||
|
||||
# if _MSC_VER <= 1200 // 1200 == VC++ 6.0
|
||||
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
|
||||
# define BOOST_NO_INTEGRAL_INT64_T
|
||||
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||
|
||||
// VC++ 6.0 has member templates but they have numerous problems including
|
||||
// cases of silent failure, so for safety we define:
|
||||
# define BOOST_NO_MEMBER_TEMPLATES
|
||||
// For VC++ experts wishing to attempt workarounds, we define:
|
||||
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
|
||||
# include <iterator> // not sure this is the right way to do this -JGS
|
||||
# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES)
|
||||
// a perfectly good implementation of std::iterator is supplied
|
||||
# elif defined(__SGI_STL_ITERATOR)
|
||||
# define BOOST_NO_STD_ITERATOR // No std::iterator in this case
|
||||
# else
|
||||
# define BOOST_MSVC_STD_ITERATOR 1
|
||||
# define BOOST_NO_SLIST
|
||||
# define BOOST_NO_HASH
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
# define BOOST_NO_STD_MIN_MAX
|
||||
# undef min
|
||||
# undef max
|
||||
# define NOMINMAX
|
||||
# endif
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
|
||||
|
||||
// Make sure at least one standard library header is included so that library
|
||||
// implementation detection will work, even if no standard headers have been
|
||||
// included in front of a boost header. (Ed Brey 5 Jun 00)
|
||||
# include <cstddef>
|
||||
|
||||
// Determine if the standard library implementation is already pulling names
|
||||
// into std. STLport defines the following if so. (Ed Brey 5 Jun 00)
|
||||
# ifndef __STL_IMPORT_VENDOR_CSTD
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# if defined BOOST_DECL_EXPORTS
|
||||
# define BOOST_DECL __declspec(dllexport)
|
||||
# else
|
||||
# define BOOST_DECL __declspec(dllimport)
|
||||
# endif
|
||||
|
||||
# endif // Microsoft (excluding Intel/EDG frontend)
|
||||
|
||||
# ifndef BOOST_DECL
|
||||
# define BOOST_DECL // default for compilers not needing this decoration.
|
||||
# endif
|
||||
|
||||
// end of compiler specific portion ----------------------------------------//
|
||||
|
||||
#ifndef BOOST_STD_EXTENSION_NAMESPACE
|
||||
# define BOOST_STD_EXTENSION_NAMESPACE std
|
||||
#endif
|
||||
|
||||
// get config suffix code:
|
||||
#include <boost/config/suffix.hpp>
|
||||
// Check for old name "BOOST_NMEMBER_TEMPLATES" for compatibility -----------//
|
||||
// Don't use BOOST_NMEMBER_TEMPLATES. It is deprecated and will be removed soon.
|
||||
#if defined( BOOST_NMEMBER_TEMPLATES ) && !defined( BOOST_NO_MEMBER_TEMPLATES )
|
||||
#define BOOST_NO_MEMBER_TEMPLATES
|
||||
#endif
|
||||
|
||||
// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
|
||||
//
|
||||
// Because std::size_t usage is so common, even in boost headers which do not
|
||||
// otherwise use the C library, the <cstddef> workaround is included here so
|
||||
// that ugly workaround code need not appear in many other boost headers.
|
||||
// NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
|
||||
// must still be #included in the usual places so that <cstddef> inclusion
|
||||
// works as expected with standard conforming compilers. The resulting
|
||||
// double inclusion of <cstddef> is harmless.
|
||||
|
||||
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||
# include <cstddef>
|
||||
namespace std { using ::ptrdiff_t; using ::size_t; }
|
||||
// using ::wchar_t; removed since wchar_t is a C++ built-in type (Ed Brey)
|
||||
# endif
|
||||
|
||||
#ifdef BOOST_NO_STD_MIN_MAX
|
||||
namespace std {
|
||||
template <class _Tp>
|
||||
inline const _Tp& min(const _Tp& __a, const _Tp& __b) {
|
||||
return __b < __a ? __b : __a;
|
||||
}
|
||||
template <class _Tp>
|
||||
inline const _Tp& max(const _Tp& __a, const _Tp& __b) {
|
||||
return __a < __b ? __b : __a;
|
||||
}
|
||||
#ifdef BOOST_MSVC
|
||||
inline long min(long __a, long __b) {
|
||||
return __b < __a ? __b : __a;
|
||||
}
|
||||
inline long max(long __a, long __b) {
|
||||
return __a < __b ? __b : __a;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // BOOST_CONFIG_HPP
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Borland C++ compiler setup:
|
||||
|
||||
# if __BORLANDC__ <= 0x0550
|
||||
// Borland C++ Builder 4 and 5:
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# if __BORLANDC__ == 0x0550
|
||||
// Borland C++ Builder 5, command-line compiler 5.5:
|
||||
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#if (__BORLANDC__ >= 0x550)
|
||||
// <climits> is partly broken, some macos define symbols that are really in
|
||||
// namespace std, so you end up having to use illegal constructs like
|
||||
// std::DBL_MAX, as a fix we'll just include float.h and have done with:
|
||||
#include <float.h>
|
||||
#endif
|
||||
|
||||
// Version 5.51:
|
||||
#if (__BORLANDC__ <= 0x551) || !defined(BOOST_STRICT_CONFIG)
|
||||
# define BOOST_NO_CV_SPECIALIZATIONS
|
||||
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
# define BOOST_NO_INTEGRAL_INT64_T
|
||||
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||
# define BOOST_NO_SWPRINTF
|
||||
# define BOOST_NO_USING_TEMPLATE
|
||||
#endif
|
||||
|
||||
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support Borland prior to version 5.4:
|
||||
#if __BORLANDC__ < 0x540
|
||||
# error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 5.51:
|
||||
#if (__BORLANDC__ > 0x551)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# else
|
||||
# pragma message( "Unknown compiler version - please run the configure tests and report the results")
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Comeau C++ compiler setup:
|
||||
|
||||
#include "boost/config/compiler/common_edg.hpp"
|
||||
|
||||
#if (__COMO_VERSION__ <= 4245) || !defined(BOOST_STRICT_CONFIG)
|
||||
# define BOOST_FUNCTION_USE_VIRTUAL_FUNCTIONS
|
||||
# if defined(_MSC_VER) && _MSC_VER <= 1300
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||
# define BOOST_NO_SWPRINTF
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't know Comeau prior to version 4245:
|
||||
#if __COMO_VERSION__ < 4245
|
||||
# error "Compiler not configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 4245:
|
||||
#if (__COMO_VERSION__ > 4245)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
//
|
||||
// Options common to all edg based compilers.
|
||||
//
|
||||
// This is included from within the individual compiler mini-configs.
|
||||
|
||||
#ifndef __EDG_VERSION__
|
||||
# error This file requires that __EDG_VERSION__ be defined.
|
||||
#endif
|
||||
|
||||
#if (__EDG_VERSION__ <= 238)
|
||||
# define BOOST_NO_VOID_RETURNS
|
||||
#endif
|
||||
|
||||
#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
|
||||
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Dec Alpha True64 C++ compiler setup:
|
||||
|
||||
#define BOOST_COMPILER "Dec Alpha True64 " BOOST_STRINGIZE(__DECCXX_VER)
|
||||
|
||||
#include "boost/config/compiler/common_edg.hpp"
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// Nothing to do here?
|
||||
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// GNU C++ compiler setup:
|
||||
|
||||
# if __GNUC__ == 2 && __GNUC_MINOR__ == 91
|
||||
// egcs 1.1 won't parse smart_ptr.hpp without this:
|
||||
# define BOOST_NO_AUTO_PTR
|
||||
# endif
|
||||
# if __GNUC__ == 2 && __GNUC_MINOR__ < 95
|
||||
//
|
||||
// Prior to gcc 2.95 member templates only partly
|
||||
// work - define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
// instead since inline member templates mostly work.
|
||||
//
|
||||
# define BOOST_NO_MEMBER_TEMPLATES
|
||||
# if __GNUC_MINOR__ >= 9
|
||||
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __GNUC__ == 2 && __GNUC_MINOR__ <= 97
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
# endif
|
||||
|
||||
//
|
||||
// Threading support:
|
||||
// Turn this on unconditionally here, it will get turned off again later
|
||||
// if no threading API is detected.
|
||||
//
|
||||
#define BOOST_HAS_THREADS
|
||||
|
||||
#define BOOST_COMPILER "GNU C++ version " BOOST_STRINGIZE(__GNUC__) "." BOOST_STRINGIZE(__GNUC_MINOR__)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't know gcc prior to version 2.90:
|
||||
#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90)
|
||||
# error "Compiler not configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 3.0:
|
||||
#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 0))
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# else
|
||||
# warning "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
@@ -1,27 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Greenhills C++ compiler setup:
|
||||
|
||||
#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
|
||||
|
||||
#include "boost/config/compiler/common_edg.hpp"
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support Greenhills prior to version 0:
|
||||
#if __ghs < 0
|
||||
# error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 0:
|
||||
#if (__ghs > 0)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// HP aCC C++ compiler setup:
|
||||
|
||||
// THIS FILE IS INCOMPLETE: WE NEED THE CORRECT VERSION CHECKS ADDING!!!
|
||||
#if (__HP_aCC <= 0) || !defined(BOOST_STRICT_CONFIG)
|
||||
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
# if !defined(_NAMESPACE_STD)
|
||||
# define BOOST_NO_STD_LOCALE
|
||||
# define BOOST_NO_STRINGSTREAM
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support HP aCC prior to version 0:
|
||||
#if __HP_aCC < 0
|
||||
# error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 0:
|
||||
#if (__HP_aCC > 0)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Intel compiler setup:
|
||||
|
||||
#include "boost/config/compiler/common_edg.hpp"
|
||||
|
||||
#ifdef __ICL
|
||||
# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICL)
|
||||
# define BOOST_INTEL_CXX_VERSION __ICL
|
||||
#else
|
||||
# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICC)
|
||||
# define BOOST_INTEL_CXX_VERSION __ICC
|
||||
#endif
|
||||
|
||||
#if (BOOST_INTEL_CXX_VERSION <= 600) || !defined(BOOST_STRICT_CONFIG)
|
||||
|
||||
# if defined(_MSC_VER)
|
||||
// Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup
|
||||
// in the frontend even in "strict" mode. (reported by Kirk Klobe)
|
||||
// Intel C++ 6.0 (currently in Beta test) doesn't have any front-end
|
||||
// changes at all. (reported by Kirk Klobe)
|
||||
# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||
# endif
|
||||
# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||
# define BOOST_NO_SWPRINTF
|
||||
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# ifndef _NATIVE_WCHAR_T_DEFINED
|
||||
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||
# endif
|
||||
# define BOOST_NO_SWPRINTF
|
||||
#endif
|
||||
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support Intel prior to version 5.0:
|
||||
#if BOOST_INTEL_CXX_VERSION < 500
|
||||
# error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 500:
|
||||
#if (BOOST_INTEL_CXX_VERSION > 500)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# elif defined(_MSC_VER)
|
||||
# warning "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Kai C++ compiler setup:
|
||||
|
||||
#include "boost/config/compiler/common_edg.hpp"
|
||||
|
||||
# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
|
||||
// at least on Sun, the contents of <cwchar> is not in namespace std
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# endif
|
||||
|
||||
#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION)
|
||||
|
||||
//
|
||||
// last known and checked version is 4001:
|
||||
#if (__KCC_VERSION > 4001)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Metrowerks C++ compiler setup:
|
||||
|
||||
# if __MWERKS__ <= 0x2301 // 5.3
|
||||
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
# define BOOST_NO_POINTER_TO_MEMBER_CONST
|
||||
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||
# endif
|
||||
|
||||
# if __MWERKS__ <= 0x2401 // 6.2
|
||||
//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
# endif
|
||||
|
||||
# if(__MWERKS__ <= 0x2405) || !defined(BOOST_STRICT_CONFIG) // 7.0
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# endif
|
||||
|
||||
#if !__option(wchar_type)
|
||||
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||
#endif
|
||||
|
||||
|
||||
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(__MWERKS__)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support Metrowerks prior to version 5.3:
|
||||
#if __MWERKS__ < 0x2301
|
||||
# error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 0x2405:
|
||||
#if (__MWERKS__ > 0x2405)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// MPW C++ compilers setup:
|
||||
|
||||
# if defined(__SC__)
|
||||
# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
|
||||
# elif defined(__MRC__)
|
||||
# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
|
||||
# else
|
||||
# error "Using MPW compiler configuration by mistake. Please update."
|
||||
# endif
|
||||
|
||||
//
|
||||
// MPW 8.90:
|
||||
//
|
||||
#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
|
||||
# define BOOST_NO_CV_SPECIALIZATIONS
|
||||
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
# define BOOST_NO_USING_TEMPLATE
|
||||
|
||||
# define BOOST_NO_CWCHAR
|
||||
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||
|
||||
# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
|
||||
#endif
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support MPW prior to version 8.9:
|
||||
#if MPW_CPLUS < 0x890
|
||||
# error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 0x890:
|
||||
#if (MPW_CPLUS > 0x890)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// SGI C++ compiler setup:
|
||||
|
||||
#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
|
||||
|
||||
#include "boost/config/compiler/common_edg.hpp"
|
||||
|
||||
//
|
||||
// version check:
|
||||
// probably nothing to do here?
|
||||
@@ -1,50 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Sun C++ compiler setup:
|
||||
|
||||
# if __SUNPRO_CC >= 0x520
|
||||
//
|
||||
// Sunpro 5.1 and later:
|
||||
//
|
||||
// although sunpro 5.1 supports the syntax for
|
||||
// inline initialization it often gets the value
|
||||
// wrong, especially where the value is computed
|
||||
// from other constants (J Maddock 6th May 2001)
|
||||
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
// although sunpro 5.1 supports the syntax for
|
||||
// partial specialization, it often seems to
|
||||
// bind to the wrong specialization. Better
|
||||
// to disable it until suppport becomes more stable
|
||||
// (J Maddock 6th May 2001).
|
||||
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
// integral constant expressions with 64 bit numbers fail
|
||||
# define BOOST_NO_INTEGRAL_INT64_T
|
||||
# endif
|
||||
# if __SUNPRO_CC <= 0x500
|
||||
# define BOOST_NO_MEMBER_TEMPLATES
|
||||
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
# endif
|
||||
|
||||
#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support sunpro prior to version 4:
|
||||
#if __SUNPRO_CC < 0x400
|
||||
#error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 0x520:
|
||||
#if (__SUNPRO_CC > 0x520)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Visual Age (IBM) C++ compiler setup:
|
||||
|
||||
#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
|
||||
//
|
||||
// On AIX thread support seems to be indicated by _THREAD_SAFE:
|
||||
//
|
||||
#ifdef _THREAD_SAFE
|
||||
# define BOOST_HAS_THREADS
|
||||
#endif
|
||||
|
||||
#define BOOST_COMPILER "IBM Visual Age" BOOST_STRINGIZE(__IBMCPP__)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support Visual age prior to version 5:
|
||||
#if __IBMCPP__ < 500
|
||||
#error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 500:
|
||||
#if (__IBMCPP__ > 500)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Microsoft Visual C++ compiler setup:
|
||||
|
||||
#define BOOST_MSVC _MSC_VER
|
||||
|
||||
// turn off the warnings before we #include anything
|
||||
#pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
|
||||
#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
|
||||
|
||||
#if _MSC_VER <= 1200 // 1200 == VC++ 6.0
|
||||
# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
# define BOOST_NO_VOID_RETURNS
|
||||
#endif
|
||||
|
||||
#if (_MSC_VER <= 1300) || !defined(BOOST_STRICT_CONFIG) // VC7 Beta 2 or later
|
||||
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||
# define BOOST_NO_INTEGRAL_INT64_T
|
||||
|
||||
// VC++ 6/7 has member templates but they have numerous problems including
|
||||
// cases of silent failure, so for safety we define:
|
||||
# define BOOST_NO_MEMBER_TEMPLATES
|
||||
// For VC++ experts wishing to attempt workarounds, we define:
|
||||
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
|
||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
# define BOOST_NO_USING_TEMPLATE
|
||||
# define BOOST_NO_SWPRINTF
|
||||
//# define BOOST_NO_POINTER_TO_MEMBER_CONST
|
||||
//
|
||||
// disable min/max macros if defined:
|
||||
//
|
||||
# ifdef min
|
||||
# undef min
|
||||
# endif
|
||||
# ifdef max
|
||||
# undef max
|
||||
# endif
|
||||
// disable min/max macro defines on vc6:
|
||||
//
|
||||
# define NOMINMAX
|
||||
#endif
|
||||
|
||||
#ifndef _NATIVE_WCHAR_T_DEFINED
|
||||
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||
#endif
|
||||
|
||||
#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(_MSC_VER)
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support Visual C++ prior to version 6:
|
||||
#if _MSC_VER < 1200
|
||||
#error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
//
|
||||
// last known and checked version is 1300:
|
||||
#if (_MSC_VER > 1300)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# else
|
||||
# warning "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// IBM/Aix specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "IBM Aix"
|
||||
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#define BOOST_HAS_PTHREADS
|
||||
#define BOOST_HAS_NL_TYPES_H
|
||||
|
||||
// Threading API's:
|
||||
#define BOOST_HAS_PTHREAD_DELAY_NP
|
||||
#define BOOST_HAS_PTHREAD_YIELD
|
||||
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// BeOS specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "BeOS"
|
||||
|
||||
#define BOOST_NO_CWCHAR
|
||||
#define BOOST_NO_CWCTYPE
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
|
||||
#define BOOST_HAS_BETHREADS
|
||||
|
||||
#ifndef BOOST_DISABLE_THREADS
|
||||
# define BOOST_HAS_THREADS
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// generic BSD config options:
|
||||
|
||||
#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
|
||||
#error "This platform is not BSD"
|
||||
#endif
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
|
||||
#elif defined(__NetBSD__)
|
||||
#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
|
||||
#elif defined(__OpenBSD__)
|
||||
#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
|
||||
#endif
|
||||
|
||||
//
|
||||
// is this the correct version check?
|
||||
// FreeBSD has <nl_type.h> but does not
|
||||
// advertise the fact in <unistd.h>:
|
||||
//
|
||||
#if defined(__FreeBSD__) && (__FreeBSD__ >= 4)
|
||||
# define BOOST_HAS_NL_TYPES_H
|
||||
#endif
|
||||
|
||||
//
|
||||
// No wide character support in the BSD header files:
|
||||
//
|
||||
#define BOOST_NO_CWCHAR
|
||||
|
||||
//
|
||||
// The BSD <ctype.h> has macros only, no functions:
|
||||
//
|
||||
#define BOOST_NO_CTYPE_FUNCTIONS
|
||||
@@ -1,30 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// cygwin specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "Cygwin"
|
||||
#define BOOST_NO_CWCTYPE
|
||||
#define BOOST_NO_CWCHAR
|
||||
#define BOOST_NO_SWPRINTF
|
||||
|
||||
//
|
||||
// Threading API:
|
||||
// See if we have POSIX threads, if we do use them, otherwise
|
||||
// revert to native Win threads.
|
||||
#include <unistd.h>
|
||||
#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
|
||||
# define BOOST_HAS_PTHREADS
|
||||
# define BOOST_HAS_SCHED_YIELD
|
||||
# define BOOST_HAS_GETTIMEOFDAY
|
||||
#else
|
||||
# define BOOST_HAS_WINTHREADS
|
||||
# define BOOST_HAS_FTIME
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// hpux specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "HP-UX"
|
||||
|
||||
// In principle, HP-UX has a nice <stdint.h> under the name <inttypes.h>
|
||||
// However, it has the following problem:
|
||||
// Use of UINT32_C(0) results in "0u l" for the preprocessed source
|
||||
// (verifyable with gcc 2.95.3, assumed for HP aCC)
|
||||
// #define BOOST_HAS_STDINT_H
|
||||
|
||||
#define BOOST_NO_SWPRINTF
|
||||
#define BOOST_NO_CWCTYPE
|
||||
@@ -1,13 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// SGI Irix specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "SGI Irix"
|
||||
|
||||
#define BOOST_NO_SWPRINTF
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// linux specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "linux"
|
||||
|
||||
// make sure we have __GLIBC_PREREQ if available at all
|
||||
#include <cstdlib>
|
||||
|
||||
//
|
||||
// <stdint.h> added to glibc 2.1.1
|
||||
// We can only test for 2.1 though:
|
||||
//
|
||||
#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
|
||||
// <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
|
||||
// int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h>
|
||||
// only when using GCC.
|
||||
# if defined __GNUC__
|
||||
# define BOOST_HAS_STDINT_H
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
|
||||
// __GLIBC_PREREQ is available since 2.1.2
|
||||
|
||||
// swprintf is available since glibc 2.2.0
|
||||
# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
|
||||
# define BOOST_NO_SWPRINTF
|
||||
# endif
|
||||
#else
|
||||
# define BOOST_NO_SWPRINTF
|
||||
#endif
|
||||
|
||||
#ifndef __GNUC__
|
||||
//
|
||||
// if the compiler is not gcc we still need to be able to parse
|
||||
// the GNU system headers, some of which (mainly <stdint.h>)
|
||||
// use GNU specific extensions:
|
||||
//
|
||||
# ifndef __extension__
|
||||
# define __extension__
|
||||
# endif
|
||||
# ifndef __const__
|
||||
# define __const__ const
|
||||
# endif
|
||||
# ifndef __volatile__
|
||||
# define __volatile__ volatile
|
||||
# endif
|
||||
# ifndef __signed__
|
||||
# define __signed__ signed
|
||||
# endif
|
||||
# ifndef __typeof__
|
||||
# define __typeof__ typeof
|
||||
# endif
|
||||
# ifndef __inline__
|
||||
# define __inline__ inline
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Mac OS specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "Mac OS"
|
||||
|
||||
// If __MACH__, we're using the BSD standard C library, not the MSL:
|
||||
#if defined(__MACH__)
|
||||
|
||||
# define BOOST_NO_CTYPE_FUNCTIONS
|
||||
# define BOOST_NO_CWCHAR
|
||||
# ifndef BOOST_HAS_UNISTD_H
|
||||
# define BOOST_HAS_UNISTD_H
|
||||
# endif
|
||||
# ifndef BOOST_HAS_STDINT_H
|
||||
# define BOOST_HAS_STDINT_H
|
||||
# endif
|
||||
|
||||
# ifndef __APPLE_CC__
|
||||
|
||||
// GCC strange "ignore std" mode works better if you pretend everything
|
||||
// is in the std namespace, for the most part.
|
||||
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# endif
|
||||
|
||||
#endif
|
||||
@@ -1,13 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// sun specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "sun"
|
||||
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Win32 specific config options:
|
||||
|
||||
#define BOOST_PLATFORM "Win32"
|
||||
|
||||
#if defined BOOST_DECL_EXPORTS
|
||||
# if defined BOOST_DECL_IMPORTS
|
||||
# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS
|
||||
# endif
|
||||
# define BOOST_DECL __declspec(dllexport)
|
||||
#elif defined BOOST_DECL_IMPORTS
|
||||
# define BOOST_DECL __declspec(dllimport)
|
||||
#else
|
||||
# define BOOST_DECL
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
|
||||
# define BOOST_NO_SWPRINTF
|
||||
#endif
|
||||
|
||||
//
|
||||
// Win32 will normally be using native Win32 threads,
|
||||
// but there is a pthread library avaliable as an option:
|
||||
//
|
||||
#ifndef BOOST_HAS_PTHREADS
|
||||
# define BOOST_HAS_WINTHREADS
|
||||
#endif
|
||||
|
||||
// WEK: Added
|
||||
#define BOOST_HAS_FTIME
|
||||
@@ -1,65 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// All POSIX feature tests go in this file:
|
||||
|
||||
# ifdef BOOST_HAS_UNISTD_H
|
||||
# include <unistd.h>
|
||||
|
||||
// XOpen has <nl_types.h>, but is this the correct version check?
|
||||
# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
|
||||
# define BOOST_HAS_NL_TYPES_H
|
||||
# endif
|
||||
|
||||
// POSIX version 6 requires <stdint.h>
|
||||
# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
|
||||
# define BOOST_HAS_STDINT_H
|
||||
# endif
|
||||
|
||||
// POSIX defines _POSIX_THREADS > 0 for pthread support,
|
||||
// however some platforms define _POSIX_THREADS without
|
||||
// a value, hence the (_POSIX_THREADS+0 >= 0) check.
|
||||
// Strictly speaking this may catch platforms with a
|
||||
// non-functioning stub <pthreads.h>, but such occurrences should
|
||||
// occur very rarely if at all.
|
||||
# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
|
||||
# define BOOST_HAS_PTHREADS
|
||||
# endif
|
||||
|
||||
// BOOST_HAS_NANOSLEEP:
|
||||
// This is predicated on _POSIX_TIMERS:
|
||||
# if defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)
|
||||
# define BOOST_HAS_NANOSLEEP
|
||||
# endif
|
||||
|
||||
// BOOST_HAS_SCHED_YIELD:
|
||||
// This is predicated on _POSIX_PRIORITY_SCHEDULING or
|
||||
// on _POSIX_THREAD_PRIORITY_SCHEDULING.
|
||||
# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)
|
||||
# define BOOST_HAS_SCHED_YIELD
|
||||
# endif
|
||||
# if defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0)
|
||||
# define BOOST_HAS_SCHED_YIELD
|
||||
# endif
|
||||
|
||||
// BOOST_HAS_GETTIMEOFDAY:
|
||||
// BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
|
||||
// These are predicated on _XOPEN_VERSION, and appears to be first released
|
||||
// in issue 4, version 2 (_XOPEN_VERSION > 500).
|
||||
# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 > 500)
|
||||
# define BOOST_HAS_GETTIMEOFDAY
|
||||
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||
# endif
|
||||
|
||||
// BOOST_HAS_CLOCK_GETTIME:
|
||||
// This is predicated on _POSIX_TIMERS.
|
||||
# if defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 > 0)
|
||||
# define BOOST_HAS_CLOCK_GETTIME
|
||||
# endif
|
||||
|
||||
|
||||
# endif
|
||||
@@ -1,77 +0,0 @@
|
||||
// Boost compiler configuration selection header file
|
||||
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// locate which compiler we are using and define
|
||||
// BOOST_COMPILER_CONFIG as needed:
|
||||
|
||||
#if defined __GNUC__
|
||||
// GNU C++:
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
|
||||
|
||||
#elif defined __KCC
|
||||
// Kai C++
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp"
|
||||
|
||||
#elif defined __sgi
|
||||
// SGI MIPSpro C++
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp"
|
||||
|
||||
#elif defined __DECCXX
|
||||
// Compaq Tru64 Unix cxx
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp"
|
||||
|
||||
#elif defined __ghs
|
||||
// Greenhills C++
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp"
|
||||
|
||||
#elif defined __BORLANDC__
|
||||
// Borland
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp"
|
||||
|
||||
#elif defined(__ICL) || defined(__ICC)
|
||||
// Intel
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
|
||||
|
||||
#elif defined __MWERKS__
|
||||
// Metrowerks CodeWarrior
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp"
|
||||
|
||||
#elif defined __SUNPRO_CC
|
||||
// Sun Workshop Compiler C++
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp"
|
||||
|
||||
#elif defined __HP_aCC
|
||||
// HP aCC
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp"
|
||||
|
||||
#elif defined(__MRC__) || defined(__SC__)
|
||||
// MPW MrCpp or SCpp
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp"
|
||||
|
||||
#elif defined(__IBMCPP__)
|
||||
// IBM Visual Age
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp"
|
||||
|
||||
# elif defined __COMO__
|
||||
// Comeau C++
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
|
||||
|
||||
#elif defined _MSC_VER
|
||||
// Microsoft Visual C++
|
||||
//
|
||||
// Must remain the last #elif since some other vendors (Metrowerks, for
|
||||
// example) also #define _MSC_VER
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp"
|
||||
|
||||
#elif defined (BOOST_ASSERT_CONFIG)
|
||||
// this must come last - generate an error if we don't
|
||||
// recognise the compiler:
|
||||
# error "Unknown compiler - please configure and report the results to boost.org"
|
||||
|
||||
#endif
|
||||
@@ -1,62 +0,0 @@
|
||||
// Boost compiler configuration selection header file
|
||||
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
|
||||
// Note that we define the headers to include using "header_name" not
|
||||
// <header_name> in order to prevent macro expansion within the header
|
||||
// name (for example "linux" is a macro on linux systems).
|
||||
|
||||
#if defined(linux) || defined(__linux) || defined(__linux__)
|
||||
// linux:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
|
||||
|
||||
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
// BSD:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp"
|
||||
|
||||
#elif defined(sun) || defined(__sun)
|
||||
// solaris:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp"
|
||||
|
||||
#elif defined(__sgi)
|
||||
// SGI Irix:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp"
|
||||
|
||||
#elif defined(__hpux)
|
||||
// hp unix:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp"
|
||||
|
||||
#elif defined(__CYGWIN__)
|
||||
// cygwin is not win32:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp"
|
||||
|
||||
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||
// win32:
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp"
|
||||
|
||||
#elif defined(__BEOS__)
|
||||
// BeOS
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp"
|
||||
|
||||
#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
|
||||
// MacOS
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp"
|
||||
|
||||
#elif defined(__IBMCPP__)
|
||||
// IBM
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
|
||||
|
||||
#elif defined (BOOST_ASSERT_CONFIG)
|
||||
// this must come last - generate an error if we don't
|
||||
// recognise the platform:
|
||||
# error "Unknown platform - please configure and report the results to boost.org"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
// Boost compiler configuration selection header file
|
||||
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
|
||||
|
||||
// we need to include a std lib header here in order to detect which
|
||||
// library is in use, use <utility> as it's about the smallest
|
||||
// of the std lib headers - do not rely on this header being included -
|
||||
// users can short-circuit this header if they know whose std lib
|
||||
// they are using.
|
||||
|
||||
#include <utility>
|
||||
|
||||
#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||
// STLPort library; this _must_ come first, otherwise since
|
||||
// STLport typically sits on top of some other library, we
|
||||
// can end up detecting that first rather than STLport:
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp"
|
||||
|
||||
#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
|
||||
// Rogue Wave library:
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
|
||||
|
||||
#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
|
||||
// Dinkumware Library:
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp"
|
||||
|
||||
#elif defined(__GLIBCPP__)
|
||||
// GNU libstdc++ 3
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
|
||||
|
||||
#elif defined(__STL_CONFIG_H)
|
||||
// generic SGI STL
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp"
|
||||
|
||||
#elif defined(__MSL_CPP__)
|
||||
// MSL standard lib:
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp"
|
||||
|
||||
#elif defined(__IBMCPP__)
|
||||
// take the default VACPP std lib
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp"
|
||||
|
||||
#elif defined(MSIPL_COMPILE_H)
|
||||
// Modena C++ standard library
|
||||
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp"
|
||||
|
||||
#elif defined (BOOST_ASSERT_CONFIG)
|
||||
// this must come last - generate an error if we don't
|
||||
// recognise the library:
|
||||
# error "Unknown standard library - please configure and report the results to boost.org"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Dinkumware standard library config:
|
||||
|
||||
#if !defined(_YVALS) && !defined(_CPPLIB_VER)
|
||||
#include <utility>
|
||||
#if !defined(_YVALS) && !defined(_CPPLIB_VER)
|
||||
#error This is not the Dinkumware lib!
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
|
||||
// full dinkumware 3.06 and above
|
||||
// fully conforming provided the compiler supports it:
|
||||
# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(_STD) // can be defined in yvals.h
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# endif
|
||||
# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0))
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
# endif
|
||||
# if defined(_MSC_VER) && (_MSC_VER < 1300)
|
||||
// if this lib version is set up for vc6 then there is no std::use_facet:
|
||||
# define BOOST_NO_STD_USE_FACET
|
||||
# define BOOST_HAS_TWO_ARG_USE_FACET
|
||||
# endif
|
||||
// 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>,
|
||||
// and no <slist> at all
|
||||
#else
|
||||
# define BOOST_MSVC_STD_ITERATOR 1
|
||||
# define BOOST_NO_STD_ITERATOR
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# define BOOST_NO_STD_USE_FACET
|
||||
# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
|
||||
# define BOOST_HAS_MACRO_USE_FACET
|
||||
# ifndef _CPPLIB_VER
|
||||
// Updated Dinkum library defines this, and provides
|
||||
// its own min and max definitions.
|
||||
# define BOOST_NO_STD_MIN_MAX
|
||||
# undef min
|
||||
# undef max
|
||||
# endif
|
||||
# ifndef NOMINMAX
|
||||
// avoid spurious NOMINMAX redefinition warning
|
||||
# define NOMINMAX
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
||||
// if we're using a dinkum lib that's
|
||||
// been configured for VC6 then there is
|
||||
// no iterator traits (true even for icl)
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
#endif
|
||||
|
||||
#ifdef _CPPLIB_VER
|
||||
# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
|
||||
#else
|
||||
# define BOOST_STDLIB "Dinkumware standard library version 1.x"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// config for libstdc++ v3
|
||||
// not much to go in here:
|
||||
|
||||
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
|
||||
|
||||
#ifndef _GLIBCPP_USE_WCHAR_T
|
||||
# define BOOST_NO_CWCHAR
|
||||
# define BOOST_NO_CWCTYPE
|
||||
# define BOOST_NO_STD_WSTRING
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Modena C++ standard library (comes with KAI C++)
|
||||
|
||||
#if !defined(MSIPL_COMPILE_H)
|
||||
# include <utility>
|
||||
# if !defined(__MSIPL_COMPILE_H)
|
||||
# error "This is not the Modena C++ library!"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef MSIPL_NL_TYPES
|
||||
#define BOOST_NO_STD_MESSAGES
|
||||
#endif
|
||||
|
||||
#ifndef MSIPL_WCHART
|
||||
#define BOOST_NO_STD_WSTRING
|
||||
#endif
|
||||
|
||||
#define BOOST_STDLIB "Modena C++ standard library"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Metrowerks standard library:
|
||||
|
||||
#ifndef __MSL_CPP__
|
||||
# include <utility>
|
||||
# ifndef __MSL_CPP__
|
||||
# error This is not the MSL standard library!
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __MSL_CPP__ >= 0x6000 // Pro 6
|
||||
# define BOOST_HAS_HASH
|
||||
# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
|
||||
#endif
|
||||
#define BOOST_HAS_SLIST
|
||||
|
||||
#if __MSL_CPP__ < 0x6209
|
||||
# define BOOST_NO_STD_MESSAGES
|
||||
#endif
|
||||
|
||||
// check C lib version for <stdint.h>
|
||||
#include <cstddef>
|
||||
|
||||
#if defined(__MSL__) && (__MSL__ >= 0x5000)
|
||||
# define BOOST_HAS_STDINT_H
|
||||
# define BOOST_HAS_UNISTD_H
|
||||
#endif
|
||||
|
||||
|
||||
#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Rogue Wave std lib:
|
||||
|
||||
#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
|
||||
# include <utility>
|
||||
# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
|
||||
# error This is not the Rogue Wave standard library
|
||||
# endif
|
||||
#endif
|
||||
//
|
||||
// figure out a consistent version number:
|
||||
//
|
||||
#ifndef _RWSTD_VER
|
||||
# define BOOST_RWSTD_VER 0x010000
|
||||
#elif _RWSTD_VER < 0x010000
|
||||
# define BOOST_RWSTD_VER (_RWSTD_VER << 8)
|
||||
#else
|
||||
# define BOOST_RWSTD_VER _RWSTD_VER
|
||||
#endif
|
||||
|
||||
#ifndef _RWSTD_VER
|
||||
# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
|
||||
#else
|
||||
# define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
|
||||
#endif
|
||||
|
||||
//
|
||||
// Prior to version 2.2.0 the primary template for std::numeric_limits
|
||||
// does not have compile time constants, even though specializations of that
|
||||
// template do:
|
||||
//
|
||||
#if BOOST_RWSTD_VER < 0x020200
|
||||
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||
#endif
|
||||
|
||||
//
|
||||
// No std::iterator if it can't figure out default template args:
|
||||
//
|
||||
#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
|
||||
# define BOOST_NO_STD_ITERATOR
|
||||
#endif
|
||||
|
||||
//
|
||||
// No iterator traits without partial specialization:
|
||||
//
|
||||
#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
#endif
|
||||
|
||||
//
|
||||
// Prior to version 2.0, std::auto_ptr was buggy, and there were no
|
||||
// new-style iostreams, and no conformant std::allocator:
|
||||
//
|
||||
#if (BOOST_RWSTD_VER < 0x020000)
|
||||
# define BOOST_NO_AUTO_PTR
|
||||
# define BOOST_NO_STRINGSTREAM
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
# define BOOST_NO_STD_LOCALE
|
||||
#endif
|
||||
|
||||
//
|
||||
// No template iterator constructors without member template support:
|
||||
//
|
||||
#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
#endif
|
||||
|
||||
//
|
||||
// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
|
||||
// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
|
||||
// on HP aCC systems even though the allocator is in fact broken):
|
||||
//
|
||||
#if !defined(_RWSTD_ALLOCATOR) || defined(_HPACC_) || defined(__HP_aCC)
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
#endif
|
||||
|
||||
//
|
||||
// If we have a std::locale, we still may not have std::use_facet:
|
||||
//
|
||||
#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
|
||||
# define BOOST_NO_STD_USE_FACET
|
||||
# define BOOST_HAS_TWO_ARG_USE_FACET
|
||||
#endif
|
||||
|
||||
//
|
||||
// There's no std::distance prior to version 2, or without
|
||||
// partial specialization support:
|
||||
//
|
||||
#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
|
||||
#define BOOST_NO_STD_DISTANCE
|
||||
#endif
|
||||
|
||||
//
|
||||
// Some versions of the rogue wave library don't have assignable
|
||||
// OutputIterators:
|
||||
//
|
||||
#if BOOST_RWSTD_VER < 0x020100
|
||||
# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
|
||||
#endif
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// generic SGI STL:
|
||||
|
||||
#if !defined(__STL_CONFIG_H)
|
||||
# include <utility>
|
||||
# if !defined(__STL_CONFIG_H)
|
||||
# error "This is not the SGI STL!"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// No std::iterator traits without partial specialisation:
|
||||
//
|
||||
#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION)
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
#endif
|
||||
|
||||
//
|
||||
// No std::stringstream with gcc < 3
|
||||
//
|
||||
#if defined(__GNUC__) && (__GNUC__ < 3) && (__GNUC_MINOR__ < 95) && !defined(__STL_USE_NEW_IOSTREAMS) || defined(__APPLE_CC__)
|
||||
// Note that we only set this for gnu C++ prior to 2.95 since the
|
||||
// latest patches for that release do contain a minimal <sstream>
|
||||
// If you are running a 2.95 release prior to 2.95.3 then this will need
|
||||
// setting, but there is no way to detect that automatically (other
|
||||
// than by running the configure script).
|
||||
# define BOOST_NO_STRINGSTREAM
|
||||
#endif
|
||||
|
||||
//
|
||||
// Assume no std::locale without own iostreams (this may be an
|
||||
// incorrect assumption in some cases):
|
||||
//
|
||||
#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS)
|
||||
# define BOOST_NO_STD_LOCALE
|
||||
#endif
|
||||
|
||||
//
|
||||
// No template iterator constructors, or std::allocator
|
||||
// without member templates:
|
||||
//
|
||||
#if !defined(__STL_MEMBER_TEMPLATES)
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
#endif
|
||||
|
||||
//
|
||||
// We always have SGI style hash_set, hash_map, and slist:
|
||||
//
|
||||
#define BOOST_HAS_HASH
|
||||
#define BOOST_HAS_SLIST
|
||||
|
||||
//
|
||||
// If this is GNU libstdc++2, then no <limits> and no std::wstring:
|
||||
//
|
||||
#if (defined(__GNUC__) && (__GNUC__ < 3))
|
||||
# include <string>
|
||||
# if defined(__BASTRING__)
|
||||
# define BOOST_NO_LIMITS
|
||||
# define BOOST_NO_STD_WSTRING
|
||||
# endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// There is no standard iterator unless we have namespace support:
|
||||
//
|
||||
#if !defined(__STL_USE_NAMESPACES)
|
||||
# define BOOST_NO_STD_ITERATOR
|
||||
#endif
|
||||
|
||||
#define BOOST_STDLIB "SGI standard library"
|
||||
@@ -1,105 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// STLPort standard library config:
|
||||
|
||||
#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||
# include <utility>
|
||||
# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||
# error "This is not STLPort!"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||
// for versions prior to 4.1(beta)
|
||||
//
|
||||
#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
|
||||
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||
#endif
|
||||
|
||||
//
|
||||
// If STLport thinks that there is no partial specialisation, then there is no
|
||||
// std::iterator traits:
|
||||
//
|
||||
#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
#endif
|
||||
|
||||
//
|
||||
// No new style iostreams on GCC without STLport's iostreams enabled:
|
||||
//
|
||||
#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
|
||||
# define BOOST_NO_STRINGSTREAM
|
||||
#endif
|
||||
|
||||
//
|
||||
// No new iostreams implies no std::locale, and no std::stringstream:
|
||||
//
|
||||
#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
|
||||
# define BOOST_NO_STD_LOCALE
|
||||
# define BOOST_NO_STRINGSTREAM
|
||||
#endif
|
||||
|
||||
//
|
||||
// Without member template support enabled, their are no template
|
||||
// iterate constructors, and no std::allocator:
|
||||
//
|
||||
#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
#endif
|
||||
|
||||
#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES)
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
#endif
|
||||
|
||||
//
|
||||
// We always have SGI style hash_set, hash_map, and slist:
|
||||
//
|
||||
#define BOOST_HAS_HASH
|
||||
#define BOOST_HAS_SLIST
|
||||
|
||||
//
|
||||
// STLport does a good job of importing names into namespace std::,
|
||||
// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
|
||||
// workaround does not conflict with STLports:
|
||||
//
|
||||
#if defined(__STL_IMPORT_VENDOR_CSTD) || defined(__STL_USE_OWN_NAMESPACE) || defined(_STLP_IMPORT_VENDOR_CSTD) || defined(_STLP_USE_OWN_NAMESPACE)
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
#endif
|
||||
|
||||
//
|
||||
// std::reverse_iterate behaves like VC6's under some circumstances:
|
||||
//
|
||||
#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) || defined (__STL_USE_OLD_HP_ITERATOR_QUERIES)\
|
||||
|| (!defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) && !defined ( __STL_CLASS_PARTIAL_SPECIALIZATION ))
|
||||
// disable this for now, it causes too many problems, we need a better
|
||||
// fix for broken reverse iterators:
|
||||
// # define BOOST_MSVC_STD_ITERATOR
|
||||
#endif
|
||||
|
||||
//
|
||||
// std::use_facet may be non-standard, uses a class instead:
|
||||
//
|
||||
#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
|
||||
# define BOOST_NO_STD_USE_FACET
|
||||
# define BOOST_HAS_STLP_USE_FACET
|
||||
#endif
|
||||
|
||||
//
|
||||
// If STLport thinks there are no wide functions, <cwchar> etc. is not working.
|
||||
//
|
||||
#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS)
|
||||
# define BOOST_NO_CWCHAR
|
||||
# define BOOST_NO_CWTYPE
|
||||
#endif
|
||||
|
||||
|
||||
#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
#define BOOST_HAS_MACRO_USE_FACET
|
||||
#define BOOST_NO_STD_ALLOCATOR
|
||||
|
||||
#define BOOST_STDLIB "Visual Age default standard library"
|
||||
|
||||
|
||||
@@ -1,311 +0,0 @@
|
||||
// Boost config.hpp configuration header file ------------------------------//
|
||||
|
||||
// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Boost config.hpp policy and rationale documentation has been moved to
|
||||
// http://www.boost.org/libs/config
|
||||
//
|
||||
// This file is intended to be stable, and relatively unchanging.
|
||||
// It should contain boilerplate code only - no compiler specific
|
||||
// code unless it is unavoidable - no changes unless unavoidable.
|
||||
|
||||
#ifndef BOOST_CONFIG_SUFFIX_HPP
|
||||
#define BOOST_CONFIG_SUFFIX_HPP
|
||||
|
||||
# ifndef BOOST_DECL
|
||||
# define BOOST_DECL // default for compilers not needing this decoration.
|
||||
# endif
|
||||
|
||||
//
|
||||
// Assume any extensions are in namespace std:: unless stated otherwise:
|
||||
//
|
||||
# ifndef BOOST_STD_EXTENSION_NAMESPACE
|
||||
# define BOOST_STD_EXTENSION_NAMESPACE std
|
||||
# endif
|
||||
|
||||
//
|
||||
// If cv-qualified specializations are not allowed, then neither are cv-void ones:
|
||||
//
|
||||
# if defined(BOOST_NO_CV_SPECIALIZATIONS) \
|
||||
&& !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
|
||||
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
# endif
|
||||
|
||||
//
|
||||
// If there is no numeric_limits template, then it can't have any compile time
|
||||
// constants either!
|
||||
//
|
||||
# if defined(BOOST_NO_LIMITS) \
|
||||
&& !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
|
||||
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||
# endif
|
||||
|
||||
//
|
||||
// if member templates are supported then so is the
|
||||
// VC6 subset of member templates:
|
||||
//
|
||||
# if !defined(BOOST_NO_MEMBER_TEMPLATES) \
|
||||
&& !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
|
||||
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
# endif
|
||||
|
||||
//
|
||||
// Without partial specialization, std::iterator_traits can't work:
|
||||
//
|
||||
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||
&& !defined(BOOST_NO_STD_ITERATOR_TRAITS)
|
||||
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||
# endif
|
||||
|
||||
//
|
||||
// Without member template support, we can't have template constructors
|
||||
// in the standard library either:
|
||||
//
|
||||
# if defined(BOOST_NO_MEMBER_TEMPLATES) \
|
||||
&& !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
|
||||
&& !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
|
||||
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
# endif
|
||||
|
||||
//
|
||||
// Without member template support, we can't have a conforming
|
||||
// std::allocator template either:
|
||||
//
|
||||
# if defined(BOOST_NO_MEMBER_TEMPLATES) \
|
||||
&& !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
|
||||
&& !defined(BOOST_NO_STD_ALLOCATOR)
|
||||
# define BOOST_NO_STD_ALLOCATOR
|
||||
# endif
|
||||
|
||||
//
|
||||
// We can't have a working std::use_facet if there is no std::locale:
|
||||
//
|
||||
# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
|
||||
# define BOOST_NO_STD_USE_FACET
|
||||
# endif
|
||||
|
||||
//
|
||||
// We can't have a std::messages facet if there is no std::locale:
|
||||
//
|
||||
# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
|
||||
# define BOOST_NO_STD_MESSAGES
|
||||
# endif
|
||||
|
||||
//
|
||||
// We can't have a <cwctype> if there is no <cwchar>:
|
||||
//
|
||||
# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
|
||||
# define BOOST_NO_CWCTYPE
|
||||
# endif
|
||||
|
||||
//
|
||||
// We can't have a swprintf if there is no <cwchar>:
|
||||
//
|
||||
# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
|
||||
# define BOOST_NO_SWPRINTF
|
||||
# endif
|
||||
|
||||
//
|
||||
// If the platform claims to be Unix, then it had better behave like Unix!
|
||||
//
|
||||
# if defined(unix) \
|
||||
|| defined(__unix) \
|
||||
|| defined(_XOPEN_SOURCE) \
|
||||
|| defined(_POSIX_SOURCE)
|
||||
|
||||
# ifndef BOOST_HAS_UNISTD_H
|
||||
# define BOOST_HAS_UNISTD_H
|
||||
# endif
|
||||
# endif
|
||||
|
||||
//
|
||||
// If we have a <unistd.h> then some options can be deduced from it:
|
||||
//
|
||||
# ifdef BOOST_HAS_UNISTD_H
|
||||
# include <boost/config/posix_features.hpp>
|
||||
# endif
|
||||
|
||||
//
|
||||
// Turn on threading support if the compiler thinks that it's in
|
||||
// multithreaded mode. We put this here because there are only a
|
||||
// limited number of macros that identify this (if there's any missing
|
||||
// from here then add to the appropriate compiler section):
|
||||
//
|
||||
#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
|
||||
|| defined(_PTHREADS)) && !defined(BOOST_HAS_THREADS)
|
||||
# define BOOST_HAS_THREADS
|
||||
#endif
|
||||
|
||||
//
|
||||
// Turn threading support off if BOOST_DISABLE_THREADS is defined:
|
||||
//
|
||||
#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
|
||||
# undef BOOST_HAS_THREADS
|
||||
#endif
|
||||
|
||||
//
|
||||
// Turn threading support off if we don't recognise the threading API:
|
||||
//
|
||||
#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
|
||||
&& !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)
|
||||
# undef BOOST_HAS_THREADS
|
||||
#endif
|
||||
|
||||
//
|
||||
// If the compiler claims to be C99 conformant, then it had better
|
||||
// have a <stdint.h>:
|
||||
//
|
||||
# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
|
||||
# define BOOST_HAS_STDINT_H
|
||||
# endif
|
||||
|
||||
//
|
||||
// Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
|
||||
// Note that this is for backwards compatibility only.
|
||||
//
|
||||
# ifndef BOOST_HAS_SLIST
|
||||
# define BOOST_NO_SLIST
|
||||
# endif
|
||||
|
||||
# ifndef BOOST_HAS_HASH
|
||||
# define BOOST_NO_HASH
|
||||
# endif
|
||||
|
||||
// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
|
||||
// Because std::size_t usage is so common, even in boost headers which do not
|
||||
// otherwise use the C library, the <cstddef> workaround is included here so
|
||||
// that ugly workaround code need not appear in many other boost headers.
|
||||
// NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
|
||||
// must still be #included in the usual places so that <cstddef> inclusion
|
||||
// works as expected with standard conforming compilers. The resulting
|
||||
// double inclusion of <cstddef> is harmless.
|
||||
|
||||
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||
# include <cstddef>
|
||||
namespace std { using ::ptrdiff_t; using ::size_t; }
|
||||
# endif
|
||||
|
||||
// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
|
||||
|
||||
# ifdef BOOST_NO_STD_MIN_MAX
|
||||
|
||||
namespace std {
|
||||
template <class _Tp>
|
||||
inline const _Tp& min(const _Tp& __a, const _Tp& __b) {
|
||||
return __b < __a ? __b : __a;
|
||||
}
|
||||
template <class _Tp>
|
||||
inline const _Tp& max(const _Tp& __a, const _Tp& __b) {
|
||||
return __a < __b ? __b : __a;
|
||||
}
|
||||
# ifdef BOOST_MSVC
|
||||
inline long min(long __a, long __b) {
|
||||
return __b < __a ? __b : __a;
|
||||
}
|
||||
inline long max(long __a, long __b) {
|
||||
return __a < __b ? __b : __a;
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
# endif
|
||||
|
||||
// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
|
||||
// On compilers which don't allow in-class initialization of static integral
|
||||
// constant members, we must use enums as a workaround if we want the constants
|
||||
// to be available at compile-time. This macro gives us a convenient way to
|
||||
// declare such constants.
|
||||
|
||||
# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
|
||||
# else
|
||||
# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
|
||||
# endif
|
||||
|
||||
// BOOST_USE_FACET workaround ----------------------------------------------//
|
||||
// When the standard library does not have a conforming std::use_facet there
|
||||
// are various workarounds available, but they differ from library to library.
|
||||
// This macro provides a consistent way to access a locale's facets.
|
||||
// Usage:
|
||||
// replace
|
||||
// std::use_facet<Type>(loc);
|
||||
// with
|
||||
// BOOST_USE_FACET(Type, loc);
|
||||
// Note do not add a std:: prefix to the front of BOOST_USE_FACET!
|
||||
|
||||
#if defined(BOOST_NO_STD_USE_FACET)
|
||||
# ifdef BOOST_HAS_TWO_ARG_USE_FACET
|
||||
# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type const*>(0))
|
||||
# elif defined(BOOST_HAS_MACRO_USE_FACET)
|
||||
# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
|
||||
# elif defined(BOOST_HAS_STLP_USE_FACET)
|
||||
# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet<Type >(loc))
|
||||
# endif
|
||||
#else
|
||||
# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
|
||||
#endif
|
||||
|
||||
// BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
|
||||
// Member templates are supported by some compilers even though they can't use
|
||||
// the A::template member<U> syntax, as a workaround replace:
|
||||
//
|
||||
// typedef typename A::template rebind<U> binder;
|
||||
//
|
||||
// with:
|
||||
//
|
||||
// typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
|
||||
|
||||
#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||
# define BOOST_NESTED_TEMPLATE template
|
||||
#else
|
||||
# define BOOST_NESTED_TEMPLATE
|
||||
#endif
|
||||
|
||||
// ---------------------------------------------------------------------------//
|
||||
|
||||
//
|
||||
// Helper macro BOOST_STRINGIZE:
|
||||
// Converts the parameter X to a string after macro replacement
|
||||
// on X has been performed.
|
||||
//
|
||||
#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
|
||||
#define BOOST_DO_STRINGIZE(X) #X
|
||||
|
||||
//
|
||||
// Helper macro BOOST_JOIN:
|
||||
// The following piece of macro magic joins the two
|
||||
// arguments together, even when one of the arguments is
|
||||
// itself a macro (see 16.3.1 in C++ standard). The key
|
||||
// is that macro expansion of macro arguments does not
|
||||
// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
|
||||
//
|
||||
#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y )
|
||||
#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y)
|
||||
#define BOOST_DO_JOIN2( X, Y ) X##Y
|
||||
|
||||
//
|
||||
// Set some default values for compiler/library/platform names.
|
||||
// These are for debugging config setup only:
|
||||
//
|
||||
# ifndef BOOST_COMPILER
|
||||
# define BOOST_COMPILER "Unknown ISO C++ Compiler"
|
||||
# endif
|
||||
# ifndef BOOST_STDLIB
|
||||
# define BOOST_STDLIB "Unknown ISO standard library"
|
||||
# endif
|
||||
# ifndef BOOST_PLATFORM
|
||||
# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
|
||||
|| defined(_POSIX_SOURCE)
|
||||
# define BOOST_PLATFORM "Generic Unix"
|
||||
# else
|
||||
# define BOOST_PLATFORM "Unknown"
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
// (C) Copyright Boost.org 2001.
|
||||
// Do not check in modified versions of this file,
|
||||
// This file may be customized by the end user, but not by boost.
|
||||
|
||||
//
|
||||
// Use this file to define a site and compiler specific
|
||||
// configuration policy:
|
||||
//
|
||||
|
||||
// define this to locate a compiler config file:
|
||||
// #define BOOST_COMPILER_CONFIG <myheader>
|
||||
|
||||
// define this to locate a stdlib config file:
|
||||
// #define BOOST_STDLIB_CONFIG <myheader>
|
||||
|
||||
// define this to locate a platform config file:
|
||||
// #define BOOST_PLATFORM_CONFIG <myheader>
|
||||
|
||||
// define this to disable compiler config,
|
||||
// use if your compiler config has nothing to set:
|
||||
// #define BOOST_NO_COMPILER_CONFIG
|
||||
|
||||
// define this to disable stdlib config,
|
||||
// use if your stdlib config has nothing to set:
|
||||
// #define BOOST_NO_STDLIB_CONFIG
|
||||
|
||||
// define this to disable platform config,
|
||||
// use if your platform config has nothing to set:
|
||||
// #define BOOST_NO_PLATFORM_CONFIG
|
||||
|
||||
// define this to disable all config options,
|
||||
// excluding the user config. Use if your
|
||||
// setup is fully ISO compliant, and has no
|
||||
// useful extensions, or for autoconf generated
|
||||
// setups:
|
||||
// #define BOOST_NO_CONFIG
|
||||
|
||||
// define this to make the config "optimistic"
|
||||
// about unknown compiler versions. Normally
|
||||
// unknown compiler versions are assumed to have
|
||||
// all the defects of the last known version, however
|
||||
// setting this flag, causes the config to assume
|
||||
// that unknown compiler versions are fully conformant
|
||||
// with the standard:
|
||||
// #define BOOST_STRICT_CONFIG
|
||||
|
||||
// define this to cause the config to halt compilation
|
||||
// with an #error if it encounters anything unknown --
|
||||
// either an unknown compiler version or an unknown
|
||||
// compiler/platform/library:
|
||||
// #define BOOST_ASSERT_CONFIG
|
||||
|
||||
|
||||
// define if you want to disable threading support, even
|
||||
// when available:
|
||||
// #define BOOST_DISABLE_THREADS
|
||||
|
||||
|
||||
@@ -1,456 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 1997
|
||||
* Silicon Graphics Computer Systems, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute and sell this software
|
||||
* and its documentation for any purpose is hereby granted without fee,
|
||||
* provided that the above copyright notice appear in all copies and
|
||||
* that both that copyright notice and this permission notice appear
|
||||
* in supporting documentation. Silicon Graphics makes no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied warranty.
|
||||
*/
|
||||
|
||||
/* NOTE: This is not portable code. Parts of numeric_limits<> are
|
||||
* inherently machine-dependent, and this file is written for the MIPS
|
||||
* architecture and the SGI MIPSpro C++ compiler. Parts of it (in
|
||||
* particular, some of the characteristics of floating-point types)
|
||||
* are almost certainly incorrect for any other platform.
|
||||
*/
|
||||
|
||||
/* The above comment is almost certainly out of date. This file works
|
||||
* on systems other than SGI MIPSpro C++ now.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Revision history:
|
||||
* 21 Sep 2001:
|
||||
* Only include <cwchar> if BOOST_NO_CWCHAR is defined. (Darin Adler)
|
||||
* 10 Aug 2001:
|
||||
* Added MIPS (big endian) to the big endian family. (Jens Maurer)
|
||||
* 13 Apr 2001:
|
||||
* Added powerpc to the big endian family. (Jeremy Siek)
|
||||
* 5 Apr 2001:
|
||||
* Added sparc (big endian) processor support (John Maddock).
|
||||
* Initial sub:
|
||||
* Modified by Jens Maurer for gcc 2.95 on x86.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_SGI_CPP_LIMITS
|
||||
#define BOOST_SGI_CPP_LIMITS
|
||||
|
||||
#include <climits>
|
||||
#include <cfloat>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#ifndef BOOST_NO_CWCHAR
|
||||
#include <cwchar> // for WCHAR_MIN and WCHAR_MAX
|
||||
#endif
|
||||
|
||||
#if defined(__sparc) || defined(__sparc__) || defined(__powerpc__) || defined(__ppc__) || defined(__hppa) || defined(_MIPSEB)
|
||||
#define BOOST_BIG_ENDIAN
|
||||
#elif defined(__i386__)
|
||||
#define BOOST_LITTLE_ENDIAN
|
||||
#else
|
||||
#error The file boost/detail/limits.hpp needs to be set up for your CPU type.
|
||||
#endif
|
||||
|
||||
namespace std {
|
||||
|
||||
enum float_round_style {
|
||||
round_indeterminate = -1,
|
||||
round_toward_zero = 0,
|
||||
round_to_nearest = 1,
|
||||
round_toward_infinity = 2,
|
||||
round_toward_neg_infinity = 3
|
||||
};
|
||||
|
||||
enum float_denorm_style {
|
||||
denorm_indeterminate = -1,
|
||||
denorm_absent = 0,
|
||||
denorm_present = 1
|
||||
};
|
||||
|
||||
// The C++ standard (section 18.2.1) requires that some of the members of
|
||||
// numeric_limits be static const data members that are given constant-
|
||||
// initializers within the class declaration. On compilers where the
|
||||
// BOOST_NO_INCLASS_MEMBER_INITIALIZATION macro is defined, it is impossible to write
|
||||
// a standard-conforming numeric_limits class.
|
||||
//
|
||||
// There are two possible workarounds: either initialize the data
|
||||
// members outside the class, or change them from data members to
|
||||
// enums. Neither workaround is satisfactory: the former makes it
|
||||
// impossible to use the data members in constant-expressions, and the
|
||||
// latter means they have the wrong type and that it is impossible to
|
||||
// take their addresses. We choose the former workaround.
|
||||
|
||||
#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
|
||||
enum { __mem_name = __mem_value }
|
||||
#else /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
|
||||
# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
|
||||
static const __mem_type __mem_name = __mem_value
|
||||
#endif /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
|
||||
|
||||
// Base class for all specializations of numeric_limits.
|
||||
|
||||
template <class __number>
|
||||
class _Numeric_limits_base {
|
||||
public:
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, false);
|
||||
|
||||
static __number min() throw() { return __number(); }
|
||||
static __number max() throw() { return __number(); }
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, 0);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, 0);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, false);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 0);
|
||||
|
||||
static __number epsilon() throw() { return __number(); }
|
||||
static __number round_error() throw() { return __number(); }
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, 0);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, 0);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, 0);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, 0);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
|
||||
has_denorm,
|
||||
denorm_absent);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
|
||||
|
||||
static __number infinity() throw() { return __number(); }
|
||||
static __number quiet_NaN() throw() { return __number(); }
|
||||
static __number signaling_NaN() throw() { return __number(); }
|
||||
static __number denorm_min() throw() { return __number(); }
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, false);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style,
|
||||
round_style,
|
||||
round_toward_zero);
|
||||
};
|
||||
|
||||
// Base class for integers.
|
||||
|
||||
template <class _Int,
|
||||
_Int __imin,
|
||||
_Int __imax,
|
||||
int __idigits = -1>
|
||||
class _Integer_limits : public _Numeric_limits_base<_Int>
|
||||
{
|
||||
public:
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
|
||||
|
||||
static _Int min() throw() { return __imin; }
|
||||
static _Int max() throw() { return __imax; }
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int,
|
||||
digits,
|
||||
(__idigits < 0) ? (int)(sizeof(_Int) * CHAR_BIT)
|
||||
- (__imin == 0 ? 0 : 1)
|
||||
: __idigits);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, (digits * 301) / 1000);
|
||||
// log 2 = 0.301029995664...
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, __imin != 0);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, true);
|
||||
};
|
||||
|
||||
#if defined(BOOST_BIG_ENDIAN)
|
||||
|
||||
template<class Number, unsigned int Word>
|
||||
struct float_helper{
|
||||
static Number get_word() throw() {
|
||||
// sizeof(long double) == 16
|
||||
const unsigned int _S_word[4] = { Word, 0, 0, 0 };
|
||||
return *reinterpret_cast<const Number*>(&_S_word);
|
||||
}
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
template<class Number, unsigned int Word>
|
||||
struct float_helper{
|
||||
static Number get_word() throw() {
|
||||
// sizeof(long double) == 12, but only 10 bytes significant
|
||||
const unsigned int _S_word[4] = { 0, 0, 0, Word };
|
||||
return *reinterpret_cast<const Number*>(
|
||||
reinterpret_cast<const char *>(&_S_word)+16-
|
||||
(sizeof(Number) == 12 ? 10 : sizeof(Number)));
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// Base class for floating-point numbers.
|
||||
template <class __number,
|
||||
int __Digits, int __Digits10,
|
||||
int __MinExp, int __MaxExp,
|
||||
int __MinExp10, int __MaxExp10,
|
||||
unsigned int __InfinityWord,
|
||||
unsigned int __QNaNWord, unsigned int __SNaNWord,
|
||||
bool __IsIEC559,
|
||||
float_round_style __RoundStyle>
|
||||
class _Floating_limits : public _Numeric_limits_base<__number>
|
||||
{
|
||||
public:
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, __Digits);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, __Digits10);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, true);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, __MinExp);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, __MaxExp);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, __MinExp10);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, __MaxExp10);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
|
||||
has_denorm,
|
||||
denorm_indeterminate);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
|
||||
|
||||
|
||||
static __number infinity() throw() {
|
||||
return float_helper<__number, __InfinityWord>::get_word();
|
||||
}
|
||||
static __number quiet_NaN() throw() {
|
||||
return float_helper<__number,__QNaNWord>::get_word();
|
||||
}
|
||||
static __number signaling_NaN() throw() {
|
||||
return float_helper<__number,__SNaNWord>::get_word();
|
||||
}
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, __IsIEC559);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false /* was: true */ );
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
|
||||
|
||||
BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, round_style, __RoundStyle);
|
||||
};
|
||||
|
||||
// Class numeric_limits
|
||||
|
||||
// The unspecialized class.
|
||||
|
||||
template<class T>
|
||||
class numeric_limits : public _Numeric_limits_base<T> {};
|
||||
|
||||
// Specializations for all built-in integral types.
|
||||
|
||||
template<>
|
||||
class numeric_limits<bool>
|
||||
: public _Integer_limits<bool, false, true, 0>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<char>
|
||||
: public _Integer_limits<char, CHAR_MIN, CHAR_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<signed char>
|
||||
: public _Integer_limits<signed char, SCHAR_MIN, SCHAR_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<unsigned char>
|
||||
: public _Integer_limits<unsigned char, 0, UCHAR_MAX>
|
||||
{};
|
||||
|
||||
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
||||
template<>
|
||||
class numeric_limits<wchar_t>
|
||||
#if !defined(WCHAR_MAX) || !defined(WCHAR_MIN)
|
||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||
: public _Integer_limits<wchar_t, 0, USHRT_MAX>
|
||||
#elif defined(__hppa)
|
||||
// wchar_t has "unsigned int" as the underlying type
|
||||
: public _Integer_limits<wchar_t, 0, UINT_MAX>
|
||||
#else
|
||||
// assume that wchar_t has "int" as the underlying type
|
||||
: public _Integer_limits<wchar_t, INT_MIN, INT_MAX>
|
||||
#endif
|
||||
#else
|
||||
// we have WCHAR_MIN and WCHAR_MAX defined, so use it
|
||||
: public _Integer_limits<wchar_t, WCHAR_MIN, WCHAR_MAX>
|
||||
#endif
|
||||
{};
|
||||
#endif
|
||||
|
||||
template<>
|
||||
class numeric_limits<short>
|
||||
: public _Integer_limits<short, SHRT_MIN, SHRT_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<unsigned short>
|
||||
: public _Integer_limits<unsigned short, 0, USHRT_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<int>
|
||||
: public _Integer_limits<int, INT_MIN, INT_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<unsigned int>
|
||||
: public _Integer_limits<unsigned int, 0, UINT_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<long>
|
||||
: public _Integer_limits<long, LONG_MIN, LONG_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<unsigned long>
|
||||
: public _Integer_limits<unsigned long, 0, ULONG_MAX>
|
||||
{};
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
// Some compilers have long long, but don't define the
|
||||
// LONGLONG_MIN and LONGLONG_MAX macros in limits.h. This
|
||||
// assumes that long long is 64 bits.
|
||||
#if !defined(LONGLONG_MIN) && !defined(LONGLONG_MAX) \
|
||||
&& !defined(ULONGLONG_MAX)
|
||||
|
||||
#define ULONGLONG_MAX 0xffffffffffffffffLLU
|
||||
#define LONGLONG_MAX 0x7fffffffffffffffLL
|
||||
#define LONGLONG_MIN (-LONGLONG_MAX - 1)
|
||||
|
||||
#endif
|
||||
|
||||
template<>
|
||||
class numeric_limits<long long>
|
||||
: public _Integer_limits<long long, LONGLONG_MIN, LONGLONG_MAX>
|
||||
{};
|
||||
|
||||
template<>
|
||||
class numeric_limits<unsigned long long>
|
||||
: public _Integer_limits<unsigned long long, 0, ULONGLONG_MAX>
|
||||
{};
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
// Specializations for all built-in floating-point type.
|
||||
|
||||
template<> class numeric_limits<float>
|
||||
: public _Floating_limits<float,
|
||||
FLT_MANT_DIG, // Binary digits of precision
|
||||
FLT_DIG, // Decimal digits of precision
|
||||
FLT_MIN_EXP, // Minimum exponent
|
||||
FLT_MAX_EXP, // Maximum exponent
|
||||
FLT_MIN_10_EXP, // Minimum base 10 exponent
|
||||
FLT_MAX_10_EXP, // Maximum base 10 exponent
|
||||
#if defined(BOOST_BIG_ENDIAN)
|
||||
0x7f80 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
|
||||
0x7f81 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
|
||||
0x7fc1 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
|
||||
#else
|
||||
0x7f800000u, // Last word of +infinity
|
||||
0x7f810000u, // Last word of quiet NaN
|
||||
0x7fc10000u, // Last word of signaling NaN
|
||||
#endif
|
||||
true, // conforms to iec559
|
||||
round_to_nearest>
|
||||
{
|
||||
public:
|
||||
static float min() throw() { return FLT_MIN; }
|
||||
static float denorm_min() throw() { return FLT_MIN; }
|
||||
static float max() throw() { return FLT_MAX; }
|
||||
static float epsilon() throw() { return FLT_EPSILON; }
|
||||
static float round_error() throw() { return 0.5f; } // Units: ulps.
|
||||
};
|
||||
|
||||
template<> class numeric_limits<double>
|
||||
: public _Floating_limits<double,
|
||||
DBL_MANT_DIG, // Binary digits of precision
|
||||
DBL_DIG, // Decimal digits of precision
|
||||
DBL_MIN_EXP, // Minimum exponent
|
||||
DBL_MAX_EXP, // Maximum exponent
|
||||
DBL_MIN_10_EXP, // Minimum base 10 exponent
|
||||
DBL_MAX_10_EXP, // Maximum base 10 exponent
|
||||
#if defined(BOOST_BIG_ENDIAN)
|
||||
0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
|
||||
0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
|
||||
0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
|
||||
#else
|
||||
0x7ff00000u, // Last word of +infinity
|
||||
0x7ff10000u, // Last word of quiet NaN
|
||||
0x7ff90000u, // Last word of signaling NaN
|
||||
#endif
|
||||
true, // conforms to iec559
|
||||
round_to_nearest>
|
||||
{
|
||||
public:
|
||||
static double min() throw() { return DBL_MIN; }
|
||||
static double denorm_min() throw() { return DBL_MIN; }
|
||||
static double max() throw() { return DBL_MAX; }
|
||||
static double epsilon() throw() { return DBL_EPSILON; }
|
||||
static double round_error() throw() { return 0.5; } // Units: ulps.
|
||||
};
|
||||
|
||||
template<> class numeric_limits<long double>
|
||||
: public _Floating_limits<long double,
|
||||
LDBL_MANT_DIG, // Binary digits of precision
|
||||
LDBL_DIG, // Decimal digits of precision
|
||||
LDBL_MIN_EXP, // Minimum exponent
|
||||
LDBL_MAX_EXP, // Maximum exponent
|
||||
LDBL_MIN_10_EXP,// Minimum base 10 exponent
|
||||
LDBL_MAX_10_EXP,// Maximum base 10 exponent
|
||||
#if defined(BOOST_BIG_ENDIAN)
|
||||
0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
|
||||
0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
|
||||
0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
|
||||
#else
|
||||
0x7fff8000u, // Last word of +infinity
|
||||
0x7fffc000u, // Last word of quiet NaN
|
||||
0x7fff9000u, // Last word of signaling NaN
|
||||
#endif
|
||||
false, // Doesn't conform to iec559
|
||||
round_to_nearest>
|
||||
{
|
||||
public:
|
||||
static long double min() throw() { return LDBL_MIN; }
|
||||
static long double denorm_min() throw() { return LDBL_MIN; }
|
||||
static long double max() throw() { return LDBL_MAX; }
|
||||
static long double epsilon() throw() { return LDBL_EPSILON; }
|
||||
static long double round_error() throw() { return 4; } // Units: ulps.
|
||||
};
|
||||
|
||||
} // namespace std
|
||||
|
||||
#endif /* BOOST_SGI_CPP_LIMITS */
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
|
||||
// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
//
|
||||
// use this header as a workaround for missing <limits>
|
||||
|
||||
#ifndef BOOST_LIMITS
|
||||
#define BOOST_LIMITS
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#ifdef BOOST_NO_LIMITS
|
||||
#include <boost/detail/limits.hpp>
|
||||
#else
|
||||
#include <limits>
|
||||
#endif
|
||||
|
||||
#endif
|
||||
407
include/boost/pending/limits.hpp
Normal file
407
include/boost/pending/limits.hpp
Normal file
@@ -0,0 +1,407 @@
|
||||
/** -*- C++ -*-
|
||||
** KAI C++ Compiler
|
||||
**
|
||||
** Copyright (C) 1996-1997, Kuck & Associates, Inc. All rights reserved.
|
||||
** This is an almost complete rewrite of Modena version.
|
||||
**/
|
||||
/**
|
||||
** Lib++ : The Modena C++ Standard Library,
|
||||
** Version 2.4, August 27th 1997
|
||||
**
|
||||
** Copyright (c) 1994-1997 Modena Software Inc.
|
||||
**/
|
||||
#ifndef BOOST_GRAPH_DETAIL_LIMITS_HPP
|
||||
#define BOOST_GRAPH_DETAIL_LIMITS_HPP
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#ifdef BOOST_NO_LIMITS
|
||||
|
||||
#define MSIPL_THROW
|
||||
|
||||
#include <float.h>
|
||||
#include <limits.h>
|
||||
|
||||
namespace std {
|
||||
|
||||
enum float_round_style {
|
||||
round_indeterminate = -1,
|
||||
round_toward_zero = 0,
|
||||
round_to_nearest = 1,
|
||||
round_toward_infinity = 2,
|
||||
round_toward_neg_infinity = 3
|
||||
};
|
||||
|
||||
template <class T>
|
||||
class numeric_limits {
|
||||
public:
|
||||
static const bool is_specialized = false;
|
||||
static T min() throw() {return T();}
|
||||
static T max() throw() {return T();}
|
||||
static const int digits = 0;
|
||||
static const int digits10 = 0;
|
||||
static const bool is_signed = false;
|
||||
static const bool is_integer = false;
|
||||
static const bool is_exact = false;
|
||||
static const int radix = 0;
|
||||
static T epsilon() throw() {return T();}
|
||||
static T round_error() throw() {return T();}
|
||||
|
||||
static const int min_exponent = 0;
|
||||
static const int min_exponent10 = 0;
|
||||
static const int max_exponent = 0;
|
||||
static const int max_exponent10 = 0;
|
||||
|
||||
static const bool has_infinity = false;
|
||||
static const bool has_quiet_NaN = false;
|
||||
static const bool has_signaling_NaN = false;
|
||||
static const bool has_denorm = false;
|
||||
static const bool has_denorm_loss = false;
|
||||
|
||||
// Sept. 1996 draft is vague on how these can be guaranteed to return
|
||||
// value without throwing an exception.
|
||||
static T infinity() throw() {return T();};
|
||||
static T quiet_NaN() throw() {return T();}
|
||||
static T signaling_NaN() throw() {return T();}
|
||||
static T denorm_min() throw() {return T();}
|
||||
|
||||
static const bool is_iec559 = false;
|
||||
static const bool is_bounded = false;
|
||||
static const bool is_modulo = false;
|
||||
|
||||
static const bool traps = false;
|
||||
static const bool tinyness_before = false;
|
||||
static const float_round_style round_style = round_toward_zero;
|
||||
};
|
||||
template<class T> const bool numeric_limits<T>::is_specialized;
|
||||
template<class T> const int numeric_limits<T>::digits;
|
||||
template<class T> const int numeric_limits<T>::digits10;
|
||||
template<class T> const bool numeric_limits<T>::is_signed;
|
||||
template<class T> const bool numeric_limits<T>::is_integer;
|
||||
template<class T> const bool numeric_limits<T>::is_exact;
|
||||
template<class T> const int numeric_limits<T>::radix;
|
||||
template<class T> const int numeric_limits<T>::min_exponent;
|
||||
template<class T> const int numeric_limits<T>::min_exponent10;
|
||||
template<class T> const int numeric_limits<T>::max_exponent;
|
||||
template<class T> const int numeric_limits<T>::max_exponent10;
|
||||
template<class T> const bool numeric_limits<T>::has_infinity;
|
||||
template<class T> const bool numeric_limits<T>::has_quiet_NaN;
|
||||
template<class T> const bool numeric_limits<T>::has_signaling_NaN;
|
||||
template<class T> const bool numeric_limits<T>::has_denorm;
|
||||
template<class T> const bool numeric_limits<T>::has_denorm_loss;
|
||||
template<class T> const bool numeric_limits<T>::is_iec559;
|
||||
template<class T> const bool numeric_limits<T>::is_bounded;
|
||||
template<class T> const bool numeric_limits<T>::is_modulo;
|
||||
template<class T> const bool numeric_limits<T>::traps;
|
||||
template<class T> const bool numeric_limits<T>::tinyness_before;
|
||||
template<class T> const float_round_style numeric_limits<T>::round_style;
|
||||
|
||||
// The specializations for floating-point types use the following macro
|
||||
// to factor out commonality. They presume IEEE arithmetic.
|
||||
#define __KAI_NUMERIC_LIMITS_FLOAT(T) \
|
||||
static const bool is_specialized = true; \
|
||||
static const int radix = 2; \
|
||||
\
|
||||
static const bool is_signed = true; \
|
||||
static const bool is_integer = false; \
|
||||
static const bool is_exact = false; \
|
||||
\
|
||||
static const bool has_infinity = true; \
|
||||
static const bool has_quiet_NaN = true; \
|
||||
static const bool has_signaling_NaN = true; \
|
||||
static const bool has_denorm = false; \
|
||||
static const bool has_denorm_loss = false; \
|
||||
\
|
||||
static const bool is_iec559 = sizeof(T)<=8; \
|
||||
static const bool is_bounded = true; \
|
||||
static const bool is_modulo = false; \
|
||||
static const bool traps = true; \
|
||||
static const bool tinyness_before = true; \
|
||||
\
|
||||
static T round_error () MSIPL_THROW { return (T)0.5F; } \
|
||||
static const float_round_style round_style = round_to_nearest; \
|
||||
static T infinity () MSIPL_THROW {return *(T*)(void*)data.value[0];}\
|
||||
static T quiet_NaN () MSIPL_THROW {return *(T*)(void*)data.value[1];}\
|
||||
static T signaling_NaN () MSIPL_THROW {return *(T*)(void*)data.value[2];}\
|
||||
private: \
|
||||
static const struct data_t { \
|
||||
T align; \
|
||||
int value[3][sizeof(T)/sizeof(int)]; \
|
||||
} data; \
|
||||
public: \
|
||||
|
||||
template<>
|
||||
class numeric_limits <float> {
|
||||
public:
|
||||
static const int digits = FLT_MANT_DIG;
|
||||
static const int digits10 = FLT_DIG;
|
||||
static const int min_exponent = FLT_MIN_EXP;
|
||||
static const int max_exponent = FLT_MAX_EXP;
|
||||
static const int min_exponent10 = FLT_MIN_10_EXP;
|
||||
static const int max_exponent10 = FLT_MAX_10_EXP;
|
||||
|
||||
__KAI_NUMERIC_LIMITS_FLOAT(float)
|
||||
|
||||
static float min () MSIPL_THROW { return FLT_MIN; }
|
||||
static float max () MSIPL_THROW { return FLT_MAX; }
|
||||
static float epsilon () MSIPL_THROW { return FLT_EPSILON; }
|
||||
static float denorm_min () MSIPL_THROW { return FLT_MIN; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <double> {
|
||||
public:
|
||||
static const int digits = DBL_MANT_DIG;
|
||||
static const int digits10 = DBL_DIG;
|
||||
static const int min_exponent = DBL_MIN_EXP;
|
||||
static const int max_exponent = DBL_MAX_EXP;
|
||||
static const int min_exponent10 = DBL_MIN_10_EXP;
|
||||
static const int max_exponent10 = DBL_MAX_10_EXP;
|
||||
|
||||
__KAI_NUMERIC_LIMITS_FLOAT(double)
|
||||
|
||||
static double min () MSIPL_THROW { return DBL_MIN; }
|
||||
static double max () MSIPL_THROW { return DBL_MAX; }
|
||||
static double epsilon () MSIPL_THROW { return DBL_EPSILON; }
|
||||
static double denorm_min () MSIPL_THROW { return min (); }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <long double> {
|
||||
public:
|
||||
static const int digits = LDBL_MANT_DIG;
|
||||
static const int digits10 = LDBL_DIG;
|
||||
static const int min_exponent = LDBL_MIN_EXP;
|
||||
static const int max_exponent = LDBL_MAX_EXP;
|
||||
static const int min_exponent10 = LDBL_MIN_10_EXP;
|
||||
static const int max_exponent10 = LDBL_MAX_10_EXP;
|
||||
|
||||
__KAI_NUMERIC_LIMITS_FLOAT(long double)
|
||||
|
||||
static long double min () MSIPL_THROW { return LDBL_MIN; }
|
||||
static long double max () MSIPL_THROW { return LDBL_MAX; }
|
||||
static long double epsilon () MSIPL_THROW { return LDBL_EPSILON; }
|
||||
static long double denorm_min () MSIPL_THROW { return min (); }
|
||||
};
|
||||
|
||||
// The specializations for integral types use three macros to factor out
|
||||
// commonality.
|
||||
//
|
||||
// __KAI_NUMERIC_LIMITS_INTEGRAL declares members of numeric_limits<T>
|
||||
// whose value does not depend on the signdness of T.
|
||||
//
|
||||
// __KAI_NUMERIC_LIMITS_SIGNED(T) declares members dependent on
|
||||
// knowing that T is signed.
|
||||
//
|
||||
// __KAI_NUMERIC_LIMITS_UNSIGNED(T) declares members dependent on
|
||||
// knowing that T is unsigned.
|
||||
//
|
||||
// We could have been real cutesy and come up with definitions that would
|
||||
// work for both signed and unsigned types, but doing so does not seem
|
||||
// to be worth the additional obfuscation and overhead for constant folding.
|
||||
//
|
||||
// The definitions are not intended to be universally portable.
|
||||
// They are designed with KAI C++ targets in mind. -ADR
|
||||
|
||||
#define __KAI_NUMERIC_LIMITS_INTEGRAL(T) \
|
||||
static const bool is_specialized = true; \
|
||||
\
|
||||
static const int radix = 2; \
|
||||
static const int min_exponent = 0; \
|
||||
static const int max_exponent = 0; \
|
||||
static const int min_exponent10 = 0; \
|
||||
static const int max_exponent10 = 0; \
|
||||
\
|
||||
static const bool is_integer = true; \
|
||||
static const bool is_exact = true; \
|
||||
\
|
||||
static const bool has_infinity = false; \
|
||||
static const bool has_quiet_NaN = false; \
|
||||
static const bool has_signaling_NaN = false; \
|
||||
static const bool has_denorm = false; \
|
||||
static const bool has_denorm_loss = false; \
|
||||
\
|
||||
static const bool is_iec559 = false; \
|
||||
static const bool is_bounded = true; \
|
||||
static const bool is_modulo = true; \
|
||||
static const bool traps = false; \
|
||||
static const bool tinyness_before = false; \
|
||||
\
|
||||
static T infinity () MSIPL_THROW { return 0; } \
|
||||
static T quiet_NaN () MSIPL_THROW { return 0; } \
|
||||
static T signaling_NaN () MSIPL_THROW { return 0; } \
|
||||
static T epsilon () MSIPL_THROW { return 1; } \
|
||||
static T denorm_min () MSIPL_THROW { return min (); } \
|
||||
static T round_error () MSIPL_THROW { return 0; } \
|
||||
\
|
||||
static const float_round_style round_style = round_toward_zero;
|
||||
|
||||
#define __KAI_NUMERIC_LIMITS_SIGNED(T) \
|
||||
static const int digits = 8*sizeof(T)-1; \
|
||||
/* Following presumes 8, 16, 32, or 64-bit T. */ \
|
||||
static const int digits10 = 7*sizeof(T)/3; \
|
||||
static const bool is_signed = true;
|
||||
|
||||
#define __KAI_NUMERIC_LIMITS_UNSIGNED(T) \
|
||||
static const int digits = 8*sizeof(T); \
|
||||
/* Following presumes 8, 16, 32, or 64-bit T. */ \
|
||||
static const int digits10 = 12*sizeof(T)/5; \
|
||||
static const bool is_signed = false;
|
||||
|
||||
template<>
|
||||
class numeric_limits <int> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(int)
|
||||
__KAI_NUMERIC_LIMITS_SIGNED(int)
|
||||
static int min() MSIPL_THROW { return INT_MIN; }
|
||||
static int max() MSIPL_THROW { return INT_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <unsigned int> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(unsigned int)
|
||||
__KAI_NUMERIC_LIMITS_UNSIGNED(unsigned int)
|
||||
static unsigned int min() MSIPL_THROW { return 0; }
|
||||
static unsigned int max() MSIPL_THROW { return UINT_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <long> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(long)
|
||||
__KAI_NUMERIC_LIMITS_SIGNED(long)
|
||||
static long min() MSIPL_THROW { return LONG_MIN; }
|
||||
static long max() MSIPL_THROW { return LONG_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <unsigned long> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(unsigned long)
|
||||
__KAI_NUMERIC_LIMITS_UNSIGNED(unsigned long)
|
||||
static unsigned long min() MSIPL_THROW { return 0; }
|
||||
static unsigned long max() MSIPL_THROW { return ULONG_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <short> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(short)
|
||||
__KAI_NUMERIC_LIMITS_SIGNED(short)
|
||||
static short min () MSIPL_THROW { return SHRT_MIN; }
|
||||
static short max () MSIPL_THROW { return SHRT_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <unsigned short> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(unsigned short)
|
||||
__KAI_NUMERIC_LIMITS_UNSIGNED(unsigned short)
|
||||
static unsigned short min () MSIPL_THROW { return 0; }
|
||||
static unsigned short max () MSIPL_THROW { return USHRT_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <char> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(char)
|
||||
static const int digits = CHAR_MIN<0 ? 7 : 8;
|
||||
static const int digits10 = 2;
|
||||
static const bool is_signed = CHAR_MIN<0;
|
||||
static char min () MSIPL_THROW { return CHAR_MIN; }
|
||||
static char max () MSIPL_THROW { return CHAR_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <signed char> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(signed char)
|
||||
__KAI_NUMERIC_LIMITS_SIGNED(signed char)
|
||||
static signed char min () MSIPL_THROW { return SCHAR_MIN; }
|
||||
static signed char max () MSIPL_THROW { return SCHAR_MAX; }
|
||||
};
|
||||
|
||||
template<>
|
||||
class numeric_limits <unsigned char> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(unsigned char)
|
||||
__KAI_NUMERIC_LIMITS_UNSIGNED(unsigned char)
|
||||
static unsigned char min () MSIPL_THROW { return 0; }
|
||||
static unsigned char max () MSIPL_THROW { return UCHAR_MAX; }
|
||||
};
|
||||
|
||||
#if 0
|
||||
#ifdef MSIPL_WCHART
|
||||
|
||||
template<>
|
||||
class numeric_limits <wchar_t> {
|
||||
public:
|
||||
__KAI_NUMERIC_LIMITS_INTEGRAL(wchar_t)
|
||||
static const bool is_signed = (wchar_t)-1<0;
|
||||
static const int digits = 8*sizeof(wchar_t) - is_signed;
|
||||
// Following assumes that wchar_t is 8, 16, or 32-bit,
|
||||
// either signed or unsigned.
|
||||
static const int digits10 = 7*sizeof(T)/3;
|
||||
static char min () MSIPL_THROW { return CHAR_MIN; }
|
||||
static char max () MSIPL_THROW { return CHAR_MAX; }
|
||||
};
|
||||
|
||||
#endif /* MSIPL_WCHART */
|
||||
|
||||
#ifdef _BOOL
|
||||
template<>
|
||||
class numeric_limits <bool> {
|
||||
public:
|
||||
static const bool is_specialized = true;
|
||||
|
||||
static const int radix = 2;
|
||||
static const int min_exponent = 0;
|
||||
static const int max_exponent = 0;
|
||||
static const int min_exponent10 = 0;
|
||||
static const int max_exponent10 = 0;
|
||||
|
||||
static const bool is_integer = false;
|
||||
static const bool is_exact = true;
|
||||
|
||||
static const bool has_infinity = false;
|
||||
static const bool has_quiet_NaN = false;
|
||||
static const bool has_signaling_NaN = false;
|
||||
static const bool has_denorm = false;
|
||||
static const bool has_denorm_loss = false;
|
||||
|
||||
static const bool is_iec559 = false;
|
||||
static const bool is_bounded = true;
|
||||
static const bool is_modulo = false;
|
||||
static const bool traps = false;
|
||||
static const bool tinyness_before = false;
|
||||
|
||||
static bool infinity () MSIPL_THROW { return false; }
|
||||
static bool quiet_NaN () MSIPL_THROW { return false; }
|
||||
static bool signaling_NaN () MSIPL_THROW { return false; }
|
||||
static bool epsilon () MSIPL_THROW { return false; }
|
||||
static bool denorm_min () MSIPL_THROW { return min (); }
|
||||
static bool round_error () MSIPL_THROW { return false; }
|
||||
|
||||
static const float_round_style round_style = round_toward_zero;
|
||||
|
||||
static const int digits = 1;
|
||||
static const int digits10 = 0;
|
||||
static const bool is_signed = false;
|
||||
|
||||
static bool min () MSIPL_THROW { return false; }
|
||||
static bool max () MSIPL_THROW { return true; }
|
||||
};
|
||||
#endif /* _BOOL */
|
||||
#endif
|
||||
|
||||
} /* namespace std */
|
||||
|
||||
|
||||
#else
|
||||
|
||||
#include <limits>
|
||||
|
||||
#endif /* BOOST_GRAPH_DETAIL_HAVE_LIMITS */
|
||||
|
||||
#endif /* BOOST_GRAPH_DETAIL_LIMIT_H */
|
||||
@@ -1,26 +0,0 @@
|
||||
// Boost config.hpp configuration header file ------------------------------//
|
||||
|
||||
// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
#ifndef BOOST_VERSION_HPP
|
||||
#define BOOST_VERSION_HPP
|
||||
|
||||
//
|
||||
// Caution, this is the only boost header that is guarenteed
|
||||
// to change with every boost release, including this header
|
||||
// will cause a recompile every time a new boost version is
|
||||
// released.
|
||||
//
|
||||
// BOOST_VERSION % 100 is the sub-minor version
|
||||
// BOOST_VERSION / 100 % 1000 is the minor version
|
||||
// BOOST_VERSION / 100000 is the major version
|
||||
|
||||
#define BOOST_VERSION 102500
|
||||
|
||||
#endif
|
||||
|
||||
87
index.htm
Normal file
87
index.htm
Normal file
@@ -0,0 +1,87 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<title>Configuration Header</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<table border="1" bgcolor="#007F7F" cellpadding="2">
|
||||
<tr>
|
||||
<td bgcolor="#FFFFFF"><img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td>
|
||||
<td><a href="../../index.htm"><font face="Arial" color="#FFFFFF"><big>Home</big></font></a></td>
|
||||
<td><a href="../../libraries.htm"><font face="Arial" color="#FFFFFF"><big>Libraries</big></font></a></td>
|
||||
<td><a href="../../people.htm"><font face="Arial" color="#FFFFFF"><big>People</big></font></a></td>
|
||||
<td><a href="../../more/faq.htm"><font face="Arial" color="#FFFFFF"><big>FAQ</big></font></a></td>
|
||||
<td><a href="../../more/index.htm"><font face="Arial" color="#FFFFFF"><big>More</big></font></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h1>Configuration Header <a href="../../boost/config.hpp">boost/config.hpp</a></h1>
|
||||
<p>The <a href="../../boost/config.hpp">boost/config.hpp</a> header is used to
|
||||
pass configuration information to other boost files, allowing them to cope with
|
||||
platform dependencies such as arithmetic byte ordering, compiler pragmas, or
|
||||
compiler shortcomings. Without such configuration information, many current
|
||||
compilers would not work with the Boost libraries.</p>
|
||||
<p>Centralizing configuration information is this header reduces the number of
|
||||
files which must be modified when porting libraries to new platforms, or when
|
||||
compilers are updated. Ideally, no other files would have to be modified when
|
||||
porting to a new platform.</p>
|
||||
<p>Configuration headers are controversial because some view them as condoning
|
||||
broken compilers and encouraging non-standard subsets. Adding settings for
|
||||
additional platforms and maintaining existing settings can also be a problem. In
|
||||
other words, configuration headers are a necessary evil rather than a desirable
|
||||
feature. The boost config.hpp policy is designed to minimize the problems and
|
||||
maximize the benefits of a configuration header.</p>
|
||||
<h2>Boost config.hpp policy</h2>
|
||||
<p>For Library Users:</p>
|
||||
<ul>
|
||||
<li>Boost library users are never required to #include boost/config.hpp, and
|
||||
are discouraged from including it on their own.</li>
|
||||
<li>Boost library users can request support for additional platforms be added
|
||||
to config.hpp by emailing <a href="mailto:config@boost.org">config@boost.org</a>
|
||||
describing their request.</li>
|
||||
</ul>
|
||||
<p>For Library Implementors:</p>
|
||||
<ul>
|
||||
<li>Boost library implementors are not required to #include boost/config.hpp,
|
||||
and are not required in any way to support compilers which do not comply
|
||||
with the C++ Standard (ISO/IEC 14882).</li>
|
||||
<li>If a library implementor wishes to support some nonconforming compiler, or
|
||||
to support some platform specific feature, #include boost/config.hpp is the
|
||||
preferred way to obtain configuration information not available from the
|
||||
standard headers such as <climits>, etc.</li>
|
||||
<li>If configuration information can be deduced from standard headers such as
|
||||
<climits>, use those standard headers rather than boost/config.hpp.</li>
|
||||
<li>Boost files that use macros defined in boost/config.hpp should have
|
||||
sensible, standard conforming, default behavior if the macro is not defined.
|
||||
This means that the starting point for porting boost/config.hpp to a new
|
||||
platform is simply to define nothing at all specific to that platform. In
|
||||
the rare case where there is no sensible default behavior, an #error message
|
||||
should describe the problem.</li>
|
||||
<li>If a Boost library implementor wants something added to config.hpp, post a
|
||||
request on the Boost mailing list. There is no guarantee such a request will
|
||||
be honored; the intent is to limit the complexity of config.hpp.</li>
|
||||
</ul>
|
||||
<p>General:</p>
|
||||
<ul>
|
||||
<li>The intent is to support only compilers which appear on their way to
|
||||
becoming C++ Standard compliant, and only recent releases of those compilers
|
||||
at that.</li>
|
||||
<li>The intent is not to disable mainstream features now well-supported by the
|
||||
majority of compilers, such as namespaces, exceptions, RTTI, or templates.</li>
|
||||
</ul>
|
||||
<h2>Documentation</h2>
|
||||
<p>See <a href="../../boost/config.hpp">boost/config.hpp</a>; it is designed to
|
||||
be self documenting.</p>
|
||||
<h2>Test program</h2>
|
||||
<p>The <a href="config_test.cpp">config_test.cpp</a> program can be used to
|
||||
verify which #defines are in effect for your compiler.</p>
|
||||
<hr>
|
||||
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->23 Jun 2000<!--webbot bot="Timestamp" endspan i-checksum="15048" --></p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_TWO_ARG_USE_FACET
|
||||
// TITLE: two argument version of use_facet
|
||||
// DESCRIPTION: The standard library lacks a conforming std::use_facet,
|
||||
// but has a two argument version that does the job.
|
||||
// This is primarily for the Rogue Wave std lib.
|
||||
|
||||
#include <locale>
|
||||
|
||||
|
||||
namespace boost_has_two_arg_use_facet{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::locale l;
|
||||
const std::ctype<char>& ct = std::use_facet(l, (const std::ctype<char>*)0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_BETHREADS
|
||||
// TITLE: BeOS Threads
|
||||
// DESCRIPTION: The platform supports BeOS style threads.
|
||||
|
||||
#include <OS.h>
|
||||
|
||||
|
||||
namespace boost_has_bethreads{
|
||||
|
||||
int test()
|
||||
{
|
||||
sem_id mut = create_sem(1, "test");
|
||||
if(mut > 0)
|
||||
{
|
||||
acquire_sem(mut);
|
||||
release_sem(mut);
|
||||
delete_sem(mut);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_HASH
|
||||
// TITLE: <hashset> and <hashmap>
|
||||
// DESCRIPTION: The C++ implementation provides the (SGI) hash_set
|
||||
// or hash_map classes.
|
||||
|
||||
#include <hash_set>
|
||||
#include <hash_map>
|
||||
|
||||
#ifndef BOOST_STD_EXTENSION_NAMESPACE
|
||||
#define BOOST_STD_EXTENSION_NAMESPACE std
|
||||
#endif
|
||||
|
||||
namespace boost_has_hash{
|
||||
|
||||
template <class Key, class Eq, class Hash, class Alloc>
|
||||
void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_set<Key,Eq,Hash,Alloc>& )
|
||||
{
|
||||
}
|
||||
|
||||
template <class Key, class T, class Eq, class Hash, class Alloc>
|
||||
void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>& )
|
||||
{
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
BOOST_STD_EXTENSION_NAMESPACE::hash_set<int> hs;
|
||||
foo(hs);
|
||||
BOOST_STD_EXTENSION_NAMESPACE::hash_map<int, long> hm;
|
||||
foo(hm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_MACRO_USE_FACET
|
||||
// TITLE: macro version of use_facet: _USE
|
||||
// DESCRIPTION: The standard library lacks a conforming std::use_facet,
|
||||
// but has a macro _USE(loc, Type) that does the job.
|
||||
// This is primarily for the Dinkumware std lib.
|
||||
|
||||
#include <locale>
|
||||
|
||||
#ifndef _USE
|
||||
#error "macro _USE not defined"
|
||||
#endif
|
||||
|
||||
namespace boost_has_macro_use_facet{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::locale l;
|
||||
const std::ctype<char>& ct = std::_USE(l, std::ctype<char>);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_NL_TYPES_H
|
||||
// TITLE: <nl_types.h>
|
||||
// DESCRIPTION: The platform has an <nl_types.h>.
|
||||
|
||||
#include <nl_types.h>
|
||||
|
||||
|
||||
namespace boost_has_nl_types_h{
|
||||
|
||||
int test()
|
||||
{
|
||||
nl_catd cat = catopen("foo", 0);
|
||||
if(cat >= 0) catclose(cat);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_PTHREADS
|
||||
// TITLE: POSIX Threads
|
||||
// DESCRIPTION: The platform supports POSIX style threads.
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
|
||||
namespace boost_has_pthreads{
|
||||
|
||||
int test()
|
||||
{
|
||||
pthread_mutex_t mut;
|
||||
int result = pthread_mutex_init(&mut, 0);
|
||||
if(0 == result)
|
||||
{
|
||||
pthread_mutex_lock(&mut);
|
||||
pthread_mutex_unlock(&mut);
|
||||
pthread_mutex_destroy(&mut);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_SLIST
|
||||
// TITLE: <slist>
|
||||
// DESCRIPTION: The C++ implementation provides the (SGI) slist class.
|
||||
|
||||
#include <slist>
|
||||
|
||||
#ifndef BOOST_STD_EXTENSION_NAMESPACE
|
||||
#define BOOST_STD_EXTENSION_NAMESPACE std
|
||||
#endif
|
||||
|
||||
namespace boost_has_slist{
|
||||
|
||||
template <class T, class Alloc>
|
||||
void foo(const BOOST_STD_EXTENSION_NAMESPACE::slist<T,Alloc>& )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
BOOST_STD_EXTENSION_NAMESPACE::slist<int> l;
|
||||
foo(l);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_STDINT_H
|
||||
// TITLE: stdint.h
|
||||
// DESCRIPTION: There are no 1998 C++ Standard headers <stdint.h>
|
||||
// or <cstdint>, although the 1999 C Standard does
|
||||
// include <stdint.h>.
|
||||
// If <stdint.h> is present, <boost/stdint.h> can make
|
||||
// good use of it, so a flag is supplied (signalling
|
||||
// presence; thus the default is not present, conforming
|
||||
// to the current C++ standard).
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
namespace boost_has_stdint_h{
|
||||
|
||||
int test()
|
||||
{
|
||||
int8_t i = 0;
|
||||
int_fast8_t j = 0;
|
||||
int_least8_t k = 0;
|
||||
(void)i;
|
||||
(void)j;
|
||||
(void)k;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_STLP_USE_FACET
|
||||
// TITLE: STLport version of use_facet
|
||||
// DESCRIPTION: The standard library lacks a conforming std::use_facet,
|
||||
// but has a workaound class-version that does the job.
|
||||
// This is primarily for the STLport std lib.
|
||||
|
||||
#include <locale>
|
||||
|
||||
|
||||
namespace boost_has_stlp_use_facet{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::locale l;
|
||||
const std::ctype<char>& ct = *std::_Use_facet<std::ctype<char> >(l);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_UNISTD_H
|
||||
// TITLE: <unistd.h>
|
||||
// DESCRIPTION: The Platform provides <unistd.h>.
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
namespace boost_has_unistd_h{
|
||||
|
||||
int test()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
// TITLE: microsoft member templates
|
||||
// DESCRIPTION: Microsoft Visual C++ 6.0 has enough member
|
||||
// template idiosyncrasies (being polite) that
|
||||
// BOOST_NO_MEMBER_TEMPLATES is defined for this compiler.
|
||||
// BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow
|
||||
// compiler specific workarounds.
|
||||
#ifndef BOOST_NESTED_TEMPLATE
|
||||
#define BOOST_NESTED_TEMPLATE template
|
||||
#endif
|
||||
|
||||
namespace boost_msvc6_member_templates{
|
||||
|
||||
template <class T>
|
||||
struct foo
|
||||
{
|
||||
template <class U>
|
||||
struct nested
|
||||
{
|
||||
typedef foo<U> other;
|
||||
};
|
||||
template <class U>
|
||||
void mfoo(const U&)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
template <class T>
|
||||
void vc6_mem_test(T i)
|
||||
{
|
||||
foo<double> f1;
|
||||
typedef foo<T> ifoo;
|
||||
f1.mfoo(i);
|
||||
typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t;
|
||||
typedef typename bound_t::other other;
|
||||
other o;
|
||||
(void)o;
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
int i = 0;
|
||||
vc6_mem_test(i);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_MSVC_STD_ITERATOR
|
||||
// TITLE: microsoft's version of std::iterator
|
||||
// DESCRIPTION: Microsoft's broken version of std::iterator
|
||||
// is being used.
|
||||
|
||||
#include <iterator>
|
||||
|
||||
namespace boost_msvc_std_iterator{
|
||||
|
||||
int test()
|
||||
{
|
||||
typedef std::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
int
|
||||
> iterator_type_2;
|
||||
typedef std::reverse_iterator<const char*, const char> r_it;
|
||||
|
||||
iterator_type_2::value_type v2 = 0;
|
||||
iterator_type_2::iterator_category cat2;
|
||||
//
|
||||
// suppress some warnings:
|
||||
//
|
||||
(void)v2;
|
||||
(void)cat2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_HAS_WINTHREADS
|
||||
// TITLE: MS Windows threads
|
||||
// DESCRIPTION: The platform supports MS Windows style threads.
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
|
||||
namespace boost_has_winthreads{
|
||||
|
||||
int test()
|
||||
{
|
||||
HANDLE h = CreateMutex(0, 0, 0);
|
||||
if(h != NULL)
|
||||
{
|
||||
WaitForSingleObject(h, INFINITE);
|
||||
ReleaseMutex(h);
|
||||
CloseHandle(h);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||
// TITLE: Koenig lookup
|
||||
// DESCRIPTION: Compiler does not implement
|
||||
// argument-dependent lookup (also named Koenig lookup);
|
||||
// see std::3.4.2 [basic.koenig.lookup]
|
||||
|
||||
|
||||
namespace boost_no_argument_dependent_lookup{
|
||||
|
||||
namespace foobar{
|
||||
|
||||
struct test{};
|
||||
|
||||
void call_test(const test&)
|
||||
{}
|
||||
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
foobar::test t;
|
||||
call_test(t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_AUTO_PTR
|
||||
// TITLE: std::auto_ptr
|
||||
// DESCRIPTION: If the compiler / library supplies non-standard or broken
|
||||
// std::auto_ptr.
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace boost_no_auto_ptr{
|
||||
|
||||
template <class T>
|
||||
class my_ptr
|
||||
{
|
||||
T* p;
|
||||
public:
|
||||
my_ptr(std::auto_ptr<T>& r)
|
||||
{
|
||||
p = r.release();
|
||||
}
|
||||
my_ptr& operator=(std::auto_ptr<T>& r)
|
||||
{
|
||||
delete p;
|
||||
p = r.release();
|
||||
return *this;
|
||||
}
|
||||
~my_ptr()
|
||||
{
|
||||
delete p;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
std::auto_ptr<int> ap1(new int);
|
||||
my_ptr<int> mp(ap1);
|
||||
std::auto_ptr<int> ap2(new int);
|
||||
mp = ap2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_CTYPE_FUNCTIONS
|
||||
// TITLE: functions in <ctype.h>
|
||||
// DESCRIPTION: The Platform does not provide functions for the character-
|
||||
// classifying operations in <ctype.h>. Some platforms provide
|
||||
// macros and don't provide functions. Under C++ it's an error
|
||||
// to provide the macros at all, but that's a separate issue.
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
namespace boost_no_ctype_functions {
|
||||
|
||||
extern "C" {
|
||||
typedef int (* character_classify_function)(int);
|
||||
}
|
||||
|
||||
void pass_function(character_classify_function)
|
||||
{
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
pass_function(isalpha);
|
||||
pass_function(isalnum);
|
||||
pass_function(iscntrl);
|
||||
pass_function(isdigit);
|
||||
pass_function(isgraph);
|
||||
pass_function(islower);
|
||||
pass_function(isprint);
|
||||
pass_function(ispunct);
|
||||
pass_function(isspace);
|
||||
pass_function(isupper);
|
||||
pass_function(isxdigit);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_CV_SPECIALIZATIONS
|
||||
// TITLE: template specialisations of cv-qualified types
|
||||
// DESCRIPTION: If template specialisations for cv-qualified types
|
||||
// conflict with a specialisation for a cv-unqualififed type.
|
||||
|
||||
|
||||
namespace boost_no_cv_specializations{
|
||||
|
||||
template <class T>
|
||||
struct is_int
|
||||
{
|
||||
};
|
||||
|
||||
template <>
|
||||
struct is_int<int>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct is_int<const int>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct is_int<volatile int>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct is_int<const volatile int>
|
||||
{};
|
||||
|
||||
int test()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
// TITLE: template specialisations of cv-qualified void
|
||||
// DESCRIPTION: If template specialisations for cv-void types
|
||||
// conflict with a specialisation for void.
|
||||
|
||||
|
||||
namespace boost_no_cv_void_specializations{
|
||||
|
||||
template <class T>
|
||||
struct is_void
|
||||
{
|
||||
};
|
||||
|
||||
template <>
|
||||
struct is_void<void>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct is_void<const void>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct is_void<volatile void>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct is_void<const volatile void>
|
||||
{};
|
||||
|
||||
int test()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_CWCHAR
|
||||
// TITLE: <wchar.h> and <cwchar>
|
||||
// DESCRIPTION: The Platform does not provide <wchar.h> and <cwchar>.
|
||||
|
||||
#include <cwchar>
|
||||
#include <wchar.h>
|
||||
|
||||
namespace boost_no_cwchar{
|
||||
|
||||
int test()
|
||||
{
|
||||
wchar_t c1[2] = { 0 };
|
||||
wchar_t c2[2] = { 0 };
|
||||
if(wcscmp(c1,c2) || wcslen(c1)) return -1;
|
||||
wcscpy(c1,c2);
|
||||
wcsxfrm(c1,c2,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_CWCTYPE
|
||||
// TITLE: <wctype.h> and <cwctype>
|
||||
// DESCRIPTION: The Platform does not provide <wctype.h> and <cwctype>.
|
||||
|
||||
//
|
||||
// Note that some platforms put these prototypes in the wrong headers,
|
||||
// we have to include pretty well all the string headers on the chance that
|
||||
// one of them will contain what we want!
|
||||
//
|
||||
#include <cwctype>
|
||||
#include <wctype.h>
|
||||
#include <cwchar>
|
||||
#include <wchar.h>
|
||||
#include <cctype>
|
||||
#include <ctype.h>
|
||||
|
||||
namespace boost_no_cwctype{
|
||||
|
||||
int test()
|
||||
{
|
||||
if(!(iswalpha(L'a') &&
|
||||
iswcntrl(L'\r') &&
|
||||
iswdigit(L'2') &&
|
||||
iswlower(L'a') &&
|
||||
iswpunct(L',') &&
|
||||
iswspace(L' ') &&
|
||||
iswupper(L'A') &&
|
||||
iswxdigit(L'A')
|
||||
)) return -1;
|
||||
if(L'a' != towlower(L'A')) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||
// TITLE: dependent nested template classes
|
||||
// DESCRIPTION: The compiler fails to compile
|
||||
// a nested class that has a dependent base class:
|
||||
// template<typename T>
|
||||
// struct foo : {
|
||||
// template<typename U>
|
||||
// struct bar : public U {};
|
||||
// };
|
||||
#ifndef BOOST_NESTED_TEMPLATE
|
||||
#define BOOST_NESTED_TEMPLATE template
|
||||
#endif
|
||||
|
||||
|
||||
namespace boost_no_dependent_nested_derivations{
|
||||
|
||||
struct UDT1{};
|
||||
struct UDT2{};
|
||||
|
||||
template<typename T>
|
||||
struct foo
|
||||
{
|
||||
template<typename U>
|
||||
struct bar : public foo<U>
|
||||
{};
|
||||
};
|
||||
|
||||
template <class T>
|
||||
void foo_test(T)
|
||||
{
|
||||
typedef foo<T> foo_type;
|
||||
typedef typename foo_type::BOOST_NESTED_TEMPLATE bar<UDT2> bar_type;
|
||||
foo<T> ft;
|
||||
bar_type bt;
|
||||
(void) &bt;
|
||||
(void) &ft;
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
foo_test(UDT1());
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||
// TITLE: dependent non-type template parameters
|
||||
// DESCRIPTION: Template value parameters cannot have a dependent
|
||||
// type, for example:
|
||||
// template<class T, typename T::type value>
|
||||
// class X { ... };
|
||||
|
||||
|
||||
namespace boost_no_dependent_types_in_template_value_parameters{
|
||||
|
||||
template <class T, typename T::type value = 0>
|
||||
class X
|
||||
{};
|
||||
|
||||
template <class T>
|
||||
struct typifier
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
|
||||
int test()
|
||||
{
|
||||
X<typifier<int> > x;
|
||||
(void) &x; // avoid "unused variable" warning
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||
// TITLE: non-deduced function template parameters
|
||||
// DESCRIPTION: Can only use deduced template arguments when
|
||||
// calling function template instantiations.
|
||||
|
||||
#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1200)
|
||||
#error "This is known to be buggy under VC6"
|
||||
#endif
|
||||
|
||||
|
||||
namespace boost_no_explicit_function_template_arguments{
|
||||
|
||||
template <int i>
|
||||
bool foo_17041(int j)
|
||||
{
|
||||
return (i == j);
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
if(0 == foo_17041<8>(8)) return -1;
|
||||
if(0 == foo_17041<4>(4)) return -1;
|
||||
if(0 == foo_17041<5>(5)) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
// TITLE: no function template ordering
|
||||
// DESCRIPTION: The compiler does not perform
|
||||
// function template ordering or its function
|
||||
// template ordering is incorrect.
|
||||
//
|
||||
// template<typename T> void f(T); // #1
|
||||
// template<typename T, typename U> void f(T (*)(U)); // #2
|
||||
// void bar(int);
|
||||
// f(&bar); // should choose #2.
|
||||
|
||||
|
||||
namespace boost_no_function_template_ordering{
|
||||
|
||||
template<typename T>
|
||||
bool f(T)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
template<typename T, typename U>
|
||||
bool f(T (*)(U))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void bar(int)
|
||||
{
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
int i = 0;
|
||||
return f(i) || !f(&bar);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||
// TITLE: inline member constant initialisation
|
||||
// DESCRIPTION: Compiler violates std::9.4.2/4.
|
||||
|
||||
|
||||
namespace boost_no_inclass_member_initialization{
|
||||
|
||||
struct UDT{};
|
||||
|
||||
|
||||
template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
|
||||
struct ice_or_helper
|
||||
{
|
||||
static const bool value = true;
|
||||
};
|
||||
template <>
|
||||
struct ice_or_helper<false, false, false, false, false, false, false>
|
||||
{
|
||||
static const bool value = false;
|
||||
};
|
||||
|
||||
template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
|
||||
struct ice_or
|
||||
{
|
||||
static const bool value = ice_or_helper<b1, b2, b3, b4, b5, b6, b7>::value;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct is_int
|
||||
{
|
||||
static const bool value = false;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct is_int<int>
|
||||
{
|
||||
static const bool value = true;
|
||||
};
|
||||
|
||||
int test()
|
||||
{
|
||||
typedef int a1[ice_or< is_int<int>::value, is_int<UDT>::value>::value ? 1 : -1];
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||
// TITLE: template iterator-constructors
|
||||
// DESCRIPTION: The standard library does not provide
|
||||
// templated iterator constructors for its containers.
|
||||
|
||||
#include <vector>
|
||||
#include <deque>
|
||||
#include <list>
|
||||
|
||||
namespace boost_no_templated_iterator_constructors{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::vector<int> v1;
|
||||
std::deque<int> d1;
|
||||
std::list<char> l1;
|
||||
|
||||
//
|
||||
// now try constructors:
|
||||
std::vector<long> v2(d1.begin(), d1.end());
|
||||
std::deque<long> d2(v1.begin(), v1.end());
|
||||
std::list<long> l2(d1.begin(), d1.end());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_LIMITS
|
||||
// TITLE: <limits>
|
||||
// DESCRIPTION: The C++ implementation does not provide the <limits> header.
|
||||
|
||||
#include <limits>
|
||||
|
||||
namespace boost_no_limits{
|
||||
|
||||
int test()
|
||||
{
|
||||
if(0 == std::numeric_limits<int>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<long>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<char>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<unsigned char>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<signed char>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<float>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<double>::is_specialized) return -1;
|
||||
if(0 == std::numeric_limits<long double>::is_specialized) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||
// TITLE: compile time constants in <limits>
|
||||
// DESCRIPTION: constants such as numeric_limits<T>::is_signed
|
||||
// are not available for use at compile-time.
|
||||
|
||||
#include <limits>
|
||||
|
||||
namespace boost_no_limits_compile_time_constants{
|
||||
|
||||
struct UDT{};
|
||||
|
||||
template <int i>
|
||||
struct assert_ice
|
||||
{
|
||||
enum { value = i };
|
||||
};
|
||||
|
||||
int test()
|
||||
{
|
||||
assert_ice< ::std::numeric_limits<int>::is_signed > one;
|
||||
assert_ice< ::std::numeric_limits<double>::is_specialized > two;
|
||||
assert_ice< ::std::numeric_limits<UDT>::is_specialized > three;
|
||||
assert_ice< ::std::numeric_limits<UDT>::is_signed > four;
|
||||
(void)one;
|
||||
(void)two;
|
||||
(void)three;
|
||||
(void)four;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||
// TITLE: member templates keyword
|
||||
// DESCRIPTION: Member template keyword not supported.
|
||||
|
||||
namespace boost_no_member_template_keyword{
|
||||
|
||||
#ifndef BOOST_NO_MEMBER_TEMPLATES
|
||||
|
||||
template <class T>
|
||||
struct foo
|
||||
{
|
||||
template <class U>
|
||||
struct nested
|
||||
{
|
||||
typedef foo<U> other;
|
||||
};
|
||||
template <class U>
|
||||
void mfoo(const U&);
|
||||
};
|
||||
|
||||
template <class T>
|
||||
template <class U>
|
||||
void foo<T>::mfoo(const U&)
|
||||
{
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void test_proc(T i)
|
||||
{
|
||||
foo<double> f1;
|
||||
typedef foo<T> ifoo;
|
||||
f1.mfoo(i);
|
||||
f1.template mfoo<T>(i);
|
||||
typedef typename ifoo::template nested<double> bound_t;
|
||||
typedef typename bound_t::other other;
|
||||
other o;
|
||||
(void) &o; // avoid "unused variable" warning
|
||||
}
|
||||
|
||||
#else
|
||||
template <class T>
|
||||
void test_proc(T)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
int test()
|
||||
{
|
||||
test_proc(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||
// TITLE: member template friends
|
||||
// DESCRIPTION: Member template friend syntax
|
||||
// ("template<class P> friend class frd;")
|
||||
// described in the C++ Standard,
|
||||
// 14.5.3, not supported.
|
||||
|
||||
|
||||
namespace boost_no_member_template_friends{
|
||||
|
||||
template <class T>
|
||||
class foobar;
|
||||
|
||||
template <class T>
|
||||
class foo;
|
||||
|
||||
template <class T>
|
||||
bool must_be_friend_proc(const foo<T>& f);
|
||||
|
||||
template <class T>
|
||||
class foo
|
||||
{
|
||||
private:
|
||||
template<typename Y> friend class foobar;
|
||||
template<typename Y> friend class foo;
|
||||
template<typename Y> friend bool must_be_friend_proc(const foo<Y>& f);
|
||||
int i;
|
||||
public:
|
||||
foo(){ i = 0; }
|
||||
template <class U>
|
||||
foo(const foo<U>& f){ i = f.i; }
|
||||
};
|
||||
|
||||
template <class T>
|
||||
bool must_be_friend_proc(const foo<T>& f)
|
||||
{ return f.i != 0; }
|
||||
|
||||
template <class T>
|
||||
class foobar
|
||||
{
|
||||
int i;
|
||||
public:
|
||||
template <class U>
|
||||
foobar(const foo<U>& f)
|
||||
{ i = f.i; }
|
||||
};
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
foo<int> fi;
|
||||
foo<double> fd(fi);
|
||||
(void) &fd; // avoid "unused variable" warning
|
||||
foobar<long> fb(fi);
|
||||
(void) &fb; // avoid "unused variable" warning
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_MEMBER_TEMPLATES
|
||||
// TITLE: member templates
|
||||
// DESCRIPTION: Member template functions not fully supported.
|
||||
|
||||
#ifndef BOOST_NESTED_TEMPLATE
|
||||
#define BOOST_NESTED_TEMPLATE template
|
||||
#endif
|
||||
|
||||
|
||||
namespace boost_no_member_templates{
|
||||
|
||||
template <class T>
|
||||
struct foo
|
||||
{
|
||||
template <class U>
|
||||
struct nested
|
||||
{
|
||||
typedef foo<U> other;
|
||||
};
|
||||
template <class U>
|
||||
void mfoo(const U&);
|
||||
};
|
||||
|
||||
template <class T>
|
||||
template <class U>
|
||||
void foo<T>::mfoo(const U&)
|
||||
{
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void test_proc(T i)
|
||||
{
|
||||
foo<double> f1;
|
||||
typedef foo<T> ifoo;
|
||||
f1.mfoo(i);
|
||||
//f1.template mfoo<T>(i);
|
||||
typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t;
|
||||
typedef typename bound_t::other other;
|
||||
other o;
|
||||
(void) &o;
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
test_proc(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
// (C) Copyright David Abrahams 1999. Permission to copy, use,
|
||||
// modify, sell and distribute this software is granted provided this
|
||||
// copyright notice appears in all copies. This software is provided
|
||||
// "as is" without express or implied warranty, and with no claim as
|
||||
// to its suitability for any purpose.
|
||||
|
||||
// (C) Copyright Jeremy Siek 1999. Permission to copy, use, modify,
|
||||
// sell and distribute this software is granted provided this
|
||||
// copyright notice appears in all copies. This software is provided
|
||||
// "as is" without express or implied warranty, and with no claim as
|
||||
// to its suitability for any purpose.
|
||||
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||
// TITLE: friend operators in namespace
|
||||
// DESCRIPTION: Compiler requires inherited operator
|
||||
// friend functions to be defined at namespace scope,
|
||||
// then using'ed to boost.
|
||||
// Probably GCC specific. See boost/operators.hpp for example.
|
||||
|
||||
namespace boost{
|
||||
|
||||
//
|
||||
// the following is taken right out of <boost/operators.hpp>
|
||||
//
|
||||
template <class T>
|
||||
struct addable1
|
||||
{
|
||||
friend T operator+(T x, const T& y) { return x += y; }
|
||||
friend bool operator != (const T& a, const T& b) { return !(a == b); }
|
||||
};
|
||||
|
||||
struct spoiler1
|
||||
{};
|
||||
|
||||
spoiler1 operator+(const spoiler1&,const spoiler1&);
|
||||
bool operator !=(const spoiler1&, const spoiler1&);
|
||||
|
||||
|
||||
} // namespace boost
|
||||
|
||||
namespace boost_no_operators_in_namespace{
|
||||
|
||||
struct spoiler2
|
||||
{};
|
||||
|
||||
spoiler2 operator+(const spoiler2&,const spoiler2&);
|
||||
bool operator !=(const spoiler2&, const spoiler2&);
|
||||
|
||||
|
||||
class add : public boost::addable1<add>
|
||||
{
|
||||
int val;
|
||||
public:
|
||||
add(int i) { val = i; }
|
||||
add(const add& a){ val = a.val; }
|
||||
add& operator+=(const add& a) { val += a.val; return *this; }
|
||||
bool operator==(const add& a)const { return val == a.val; }
|
||||
};
|
||||
|
||||
int test()
|
||||
{
|
||||
add a1(2);
|
||||
add a2(3);
|
||||
add a3(0);
|
||||
a3 = a1 + a2;
|
||||
bool b1 = (a1 == a2);
|
||||
b1 = (a1 != a2);
|
||||
(void)b1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
// TITLE: partial specialisation
|
||||
// DESCRIPTION: Class template partial specialization
|
||||
// (14.5.4 [temp.class.spec]) not supported.
|
||||
|
||||
|
||||
namespace boost_no_template_partial_specialization{
|
||||
|
||||
template <class T>
|
||||
struct partial1
|
||||
{
|
||||
typedef T& type;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct partial1<T&>
|
||||
{
|
||||
typedef T& type;
|
||||
};
|
||||
|
||||
template <class T, bool b>
|
||||
struct partial2
|
||||
{
|
||||
typedef T& type;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct partial2<T,true>
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
int i = 0;
|
||||
partial1<int&>::type p1 = i;
|
||||
partial2<int&,true>::type p2 = i;
|
||||
(void)p1;
|
||||
(void)p2;
|
||||
(void)i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||
// TITLE: private in aggregate types
|
||||
// DESCRIPTION: The compiler misreads 8.5.1, treating classes
|
||||
// as non-aggregate if they contain private or
|
||||
// protected member functions.
|
||||
|
||||
|
||||
namespace boost_no_private_in_aggregate{
|
||||
|
||||
struct t
|
||||
{
|
||||
private:
|
||||
void foo(){ i = j; }
|
||||
public:
|
||||
int i;
|
||||
int j;
|
||||
};
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
t inst = { 0, 0, };
|
||||
(void) &inst; // avoid "unused variable" warning
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
// Copyright (c) 2000
|
||||
// Cadenza New Zealand Ltd
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
// and its documentation for any purpose is hereby granted without
|
||||
// fee, provided that the above copyright notice appears in all copies
|
||||
// and that both the copyright notice and this permission notice
|
||||
// appear in supporting documentation. Cadenza New Zealand Ltd makes
|
||||
// no representations about the suitability of this software for any
|
||||
// purpose. It is provided "as is" without express or implied
|
||||
// warranty.
|
||||
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_POINTER_TO_MEMBER_CONST
|
||||
// TITLE: pointers to const member functions
|
||||
// DESCRIPTION: The compiler does not correctly handle
|
||||
// pointers to const member functions, preventing use
|
||||
// of these in overloaded function templates.
|
||||
// See boost/functional.hpp for example.
|
||||
|
||||
#include <functional>
|
||||
|
||||
namespace boost_no_pointer_to_member_const{
|
||||
|
||||
template <class S, class T>
|
||||
class const_mem_fun_t : public std::unary_function<const T*, S>
|
||||
{
|
||||
public:
|
||||
explicit const_mem_fun_t(S (T::*p)() const)
|
||||
:
|
||||
ptr(p)
|
||||
{}
|
||||
S operator()(const T* p) const
|
||||
{
|
||||
return (p->*ptr)();
|
||||
}
|
||||
private:
|
||||
S (T::*ptr)() const;
|
||||
};
|
||||
|
||||
template <class S, class T, class A>
|
||||
class const_mem_fun1_t : public std::binary_function<const T*, A, S>
|
||||
{
|
||||
public:
|
||||
explicit const_mem_fun1_t(S (T::*p)(A) const)
|
||||
:
|
||||
ptr(p)
|
||||
{}
|
||||
S operator()(const T* p, const A& x) const
|
||||
{
|
||||
return (p->*ptr)(x);
|
||||
}
|
||||
private:
|
||||
S (T::*ptr)(A) const;
|
||||
};
|
||||
|
||||
template<class S, class T>
|
||||
inline const_mem_fun_t<S,T> mem_fun(S (T::*f)() const)
|
||||
{
|
||||
return const_mem_fun_t<S,T>(f);
|
||||
}
|
||||
|
||||
template<class S, class T, class A>
|
||||
inline const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const)
|
||||
{
|
||||
return const_mem_fun1_t<S,T,A>(f);
|
||||
}
|
||||
|
||||
class tester
|
||||
{
|
||||
public:
|
||||
void foo1()const{}
|
||||
int foo2(int i)const{ return i*2; }
|
||||
};
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
mem_fun(&tester::foo1);
|
||||
mem_fun(&tester::foo2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STRINGSTREAM
|
||||
// TITLE: <sstream>
|
||||
// DESCRIPTION: The C++ implementation does not provide the <sstream> header.
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
namespace boost_no_stringstream{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "abc";
|
||||
std::string s = ss.str();
|
||||
return (s != "abc");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_ALLOCATOR
|
||||
// TITLE: std::allocator
|
||||
// DESCRIPTION: The C++ standard library does not provide
|
||||
// a standards conforming std::allocator.
|
||||
|
||||
#ifndef BOOST_NESTED_TEMPLATE
|
||||
#define BOOST_NESTED_TEMPLATE template
|
||||
#endif
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace boost_no_std_allocator{
|
||||
|
||||
template <class T>
|
||||
int foo(const T& i)
|
||||
{
|
||||
typedef std::allocator<int> alloc1_t;
|
||||
typedef typename alloc1_t::size_type size_type;
|
||||
typedef typename alloc1_t::difference_type difference_type;
|
||||
typedef typename alloc1_t::pointer pointer;
|
||||
typedef typename alloc1_t::const_pointer const_pointer;
|
||||
typedef typename alloc1_t::reference reference;
|
||||
typedef typename alloc1_t::const_reference const_reference;
|
||||
typedef typename alloc1_t::value_type value_type;
|
||||
|
||||
typedef typename alloc1_t::BOOST_NESTED_TEMPLATE rebind<double> binder_t;
|
||||
typedef typename binder_t::other alloc2_t;
|
||||
|
||||
alloc1_t a1;
|
||||
alloc1_t a2(a1);
|
||||
|
||||
pointer p = a1.allocate(1);
|
||||
const_pointer cp = p;
|
||||
a1.construct(p,i);
|
||||
size_type s = a1.max_size();
|
||||
(void)s;
|
||||
reference r = *p;
|
||||
const_reference cr = *cp;
|
||||
if(p != a1.address(r)) return -1;
|
||||
if(cp != a1.address(cr)) return -1;
|
||||
a1.destroy(p);
|
||||
a1.deallocate(p,1);
|
||||
|
||||
alloc2_t a3(a1);
|
||||
// this chokes early versions of the MSL library
|
||||
// and isn't currently required by anything in boost
|
||||
// so don't test for now...
|
||||
// a3 = a2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
return foo(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_DISTANCE
|
||||
// TITLE: std::distance
|
||||
// DESCRIPTION: The platform does not have a conforming version of std::distance.
|
||||
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
|
||||
|
||||
namespace boost_no_std_distance{
|
||||
|
||||
int test()
|
||||
{
|
||||
const char* begin = 0;
|
||||
const char* end = 0;
|
||||
if(std::distance(begin, end)) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_ITERATOR_TRAITS
|
||||
// TITLE: std::iterator_traits
|
||||
// DESCRIPTION: The compiler does not provide a standard
|
||||
// compliant implementation of std::iterator_traits.
|
||||
// Note that the compiler may still have a non-standard
|
||||
// implementation.
|
||||
|
||||
#include <iterator>
|
||||
#include <stddef.h>
|
||||
|
||||
namespace boost_no_std_iterator_traits{
|
||||
|
||||
struct UDT_iterator
|
||||
{
|
||||
typedef int value_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef int* pointer;
|
||||
typedef int& reference;
|
||||
typedef std::input_iterator_tag iterator_category;
|
||||
};
|
||||
|
||||
struct UDT{};
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
std::iterator_traits<UDT_iterator>::value_type v = 0;
|
||||
std::iterator_traits<UDT_iterator>::difference_type d = 0;
|
||||
std::iterator_traits<UDT_iterator>::pointer p = &v;
|
||||
std::iterator_traits<UDT_iterator>::reference r = v;
|
||||
std::iterator_traits<UDT_iterator>::iterator_category cat;
|
||||
|
||||
std::iterator_traits<UDT*>::value_type v2;
|
||||
std::iterator_traits<UDT*>::difference_type d2 = 0;
|
||||
std::iterator_traits<UDT*>::pointer p2 = &v2;
|
||||
std::iterator_traits<UDT*>::reference r2 = v2;
|
||||
std::iterator_traits<UDT*>::iterator_category cat2;
|
||||
|
||||
std::iterator_traits<const UDT*>::value_type v3;
|
||||
std::iterator_traits<const UDT*>::difference_type d3 = 0;
|
||||
std::iterator_traits<const UDT*>::pointer p3 = &v3;
|
||||
std::iterator_traits<const UDT*>::reference r3 = v3;
|
||||
std::iterator_traits<const UDT*>::iterator_category cat3;
|
||||
|
||||
//
|
||||
// suppress some warnings:
|
||||
//
|
||||
(void) &v;
|
||||
(void) &d;
|
||||
(void) &p;
|
||||
(void) &r;
|
||||
(void) &cat;
|
||||
|
||||
(void) &v2;
|
||||
(void) &d2;
|
||||
(void) &p2;
|
||||
(void) &r2;
|
||||
(void) &cat2;
|
||||
|
||||
(void) &v3;
|
||||
(void) &d3;
|
||||
(void) &p3;
|
||||
(void) &r3;
|
||||
(void) &cat3;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_ITERATOR
|
||||
// TITLE: std::iterator
|
||||
// DESCRIPTION: The C++ implementation fails to provide the
|
||||
// std::iterator class.
|
||||
|
||||
#include <iterator>
|
||||
#include <stddef.h>
|
||||
|
||||
namespace boost_no_std_iterator{
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
typedef std::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
int,
|
||||
ptrdiff_t,
|
||||
int*,
|
||||
int&
|
||||
> iterator_type;
|
||||
|
||||
iterator_type::value_type v = 0;
|
||||
iterator_type::difference_type d = 0;
|
||||
iterator_type::pointer p = &v;
|
||||
iterator_type::reference r = v;
|
||||
iterator_type::iterator_category cat;
|
||||
|
||||
typedef std::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
int
|
||||
> iterator_type_2;
|
||||
|
||||
iterator_type_2::value_type v2 = 0;
|
||||
iterator_type_2::difference_type d2 = 0;
|
||||
iterator_type_2::pointer p2 = &v2;
|
||||
iterator_type_2::reference r2 = v2;
|
||||
iterator_type_2::iterator_category cat2;
|
||||
//
|
||||
// suppress some warnings:
|
||||
//
|
||||
(void) &v;
|
||||
(void) &d;
|
||||
(void) &p;
|
||||
(void) &r;
|
||||
(void) &cat;
|
||||
|
||||
(void) &v2;
|
||||
(void) &d2;
|
||||
(void) &p2;
|
||||
(void) &r2;
|
||||
(void) &cat2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_LOCALE
|
||||
// TITLE: std::locale
|
||||
// DESCRIPTION: The standard library lacks std::locale.
|
||||
|
||||
#include <locale>
|
||||
|
||||
namespace boost_no_std_locale{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::locale l1;
|
||||
//
|
||||
// ideally we would construct a locale from a facet,
|
||||
// but that requires template member functions which
|
||||
// may not be available, instead just check that we can
|
||||
// construct a pointer to a facet:
|
||||
//
|
||||
const std::ctype<char>* pct = 0;
|
||||
(void) &l1;
|
||||
(void) &pct;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_MESSAGES
|
||||
// TITLE: std::messages<charT>
|
||||
// DESCRIPTION: The standard library lacks a conforming std::messages facet.
|
||||
|
||||
#include <locale>
|
||||
|
||||
|
||||
namespace boost_no_std_messages{
|
||||
|
||||
int test()
|
||||
{
|
||||
const std::messages<char>* pmf = 0;
|
||||
(void) &pmf;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_MIN_MAX
|
||||
// TITLE: std::min and std::max
|
||||
// DESCRIPTION: The C++ standard library does not provide
|
||||
// the min() and max() template functions that
|
||||
// should be in <algorithm>.
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace boost_no_std_min_max{
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
int i = 0;
|
||||
int j = 2;
|
||||
if(std::min(i,j) != 0) return -1;
|
||||
if(std::max(i,j) != 2) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
|
||||
// TITLE: That the std output iterators are assignable
|
||||
// DESCRIPTION: Some std lib output iterators are not assignable
|
||||
// even this is required by the standard.
|
||||
|
||||
#include <iterator>
|
||||
#include <list>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
namespace boost_no_std_output_iterator_assign {
|
||||
|
||||
int test()
|
||||
{
|
||||
std::list<int> l;
|
||||
std::back_insert_iterator<std::list<int> > bi1(l);
|
||||
std::back_insert_iterator<std::list<int> > bi2(l);
|
||||
bi1 = bi2;
|
||||
|
||||
std::front_insert_iterator<std::list<int> > fi1(l);
|
||||
std::front_insert_iterator<std::list<int> > fi2(l);
|
||||
fi1 = fi2;
|
||||
|
||||
std::ostream_iterator<char> osi1(std::cout);
|
||||
std::ostream_iterator<char> osi2(std::cout);
|
||||
osi1 = osi2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_USE_FACET
|
||||
// TITLE: std::use_facet
|
||||
// DESCRIPTION: The standard library lacks a conforming std::use_facet.
|
||||
|
||||
#include <locale>
|
||||
|
||||
namespace boost_no_std_use_facet{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::locale l;
|
||||
const std::ctype<char>& ct = std::use_facet<std::ctype<char> >(l);
|
||||
(void)ct;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STD_WSTRING
|
||||
// TITLE: std::wstring
|
||||
// DESCRIPTION: The standard library lacks std::wstring.
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace boost_no_std_wstring{
|
||||
|
||||
int test()
|
||||
{
|
||||
std::wstring s;
|
||||
if(*s.c_str() || (s.begin() != s.end()) || s.size() || (sizeof(std::wstring::value_type) != sizeof(wchar_t))) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_STDC_NAMESPACE
|
||||
// TITLE: std:: namespace for C API's
|
||||
// DESCRIPTION: The contents of C++ standard headers for C library
|
||||
// functions (the <c...> headers) have not been placed
|
||||
// in namespace std. This test is difficult - some libraries
|
||||
// "fake" the std C functions by adding using declarations
|
||||
// to import them into namespace std, unfortunately they don't
|
||||
// necessarily catch all of them...
|
||||
|
||||
#include <cstring>
|
||||
#include <cctype>
|
||||
#include <ctime>
|
||||
|
||||
#undef isspace
|
||||
#undef isalpha
|
||||
#undef ispunct
|
||||
|
||||
namespace boost_no_stdc_namespace{
|
||||
|
||||
|
||||
int test()
|
||||
{
|
||||
char c = 0;
|
||||
#ifndef BOOST_NO_CTYPE_FUNCTIONS
|
||||
std::isspace(c);
|
||||
std::isalpha(c);
|
||||
std::ispunct(c);
|
||||
#endif
|
||||
std::strlen(&c);
|
||||
std::clock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_SWPRINTF
|
||||
// TITLE: swprintf
|
||||
// DESCRIPTION: The platform does not have a conforming version of swprintf.
|
||||
|
||||
#include <wchar.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
namespace boost_no_swprintf{
|
||||
|
||||
int test()
|
||||
{
|
||||
wchar_t buf[10];
|
||||
swprintf(buf, 10, L"%d", 10);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_USING_TEMPLATE
|
||||
// TITLE: using template declarations
|
||||
// DESCRIPTION: The compiler will not accept a using declaration
|
||||
// that imports a template from the global namespace
|
||||
// into a named namespace. Probably Borland specific.
|
||||
|
||||
template <class T>
|
||||
int global_foo(T)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <class T, class U = void>
|
||||
struct op
|
||||
{
|
||||
friend op<T,U> operator +(const op&, const op&)
|
||||
{
|
||||
return op();
|
||||
};
|
||||
};
|
||||
|
||||
namespace boost_no_using_template{
|
||||
|
||||
using ::global_foo;
|
||||
using ::op;
|
||||
|
||||
int test()
|
||||
{
|
||||
boost_no_using_template::op<int, int> a;
|
||||
boost_no_using_template::op<int, int> b;
|
||||
a+b;
|
||||
return boost_no_using_template::global_foo(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_VOID_RETURNS
|
||||
// TITLE: no void returns
|
||||
// DESCRIPTION: The compiler does not allow a void function
|
||||
// to return the result of calling another void
|
||||
// function.
|
||||
//
|
||||
// void f() {}
|
||||
// void g() { return f(); }
|
||||
|
||||
|
||||
namespace boost_no_void_returns{
|
||||
|
||||
void f() {}
|
||||
|
||||
void g() { return f(); }
|
||||
|
||||
int test()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// MACRO: BOOST_NO_INTRINSIC_WCHAR_T
|
||||
// TITLE: intrinsic wchar_t
|
||||
// DESCRIPTION: The C++ implementation does not provide wchar_t,
|
||||
// or it is really a synonym for another integral type.
|
||||
// Use this symbol to decide whether it is appropriate
|
||||
// to explicitly specialize a template on wchar_t if there
|
||||
// is already a specialization for other integer types.
|
||||
|
||||
#ifndef BOOST_NO_CWCHAR
|
||||
#include <wchar.h>
|
||||
#endif
|
||||
|
||||
namespace boost_no_intrinsic_wchar_t{
|
||||
|
||||
template <class T>
|
||||
struct is_int{};
|
||||
|
||||
template <> struct is_int<unsigned char>{};
|
||||
template <> struct is_int<signed char>{};
|
||||
template <> struct is_int<char>{};
|
||||
template <> struct is_int<unsigned short>{};
|
||||
template <> struct is_int<short>{};
|
||||
template <> struct is_int<unsigned int>{};
|
||||
template <> struct is_int<int>{};
|
||||
template <> struct is_int<unsigned long>{};
|
||||
template <> struct is_int<long>{};
|
||||
template <> struct is_int<wchar_t>{};
|
||||
|
||||
int test()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,902 +0,0 @@
|
||||
// Boost config.hpp configuration test program file -----------------------//
|
||||
|
||||
// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and
|
||||
// distribute this software is granted provided this copyright notice appears
|
||||
// in all copies. This software is provided "as is" without express or implied
|
||||
// warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
// See http://www.boost.org for the most recent version.
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/version.hpp>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifdef BOOST_HAS_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
unsigned int indent = 4;
|
||||
unsigned int width = 40;
|
||||
|
||||
using std::cout;
|
||||
using std::istream;
|
||||
|
||||
void print_macro(const char* name, const char* value)
|
||||
{
|
||||
// if name == value+1 then then macro is not defined,
|
||||
// in which case we don't print anything:
|
||||
if(0 != strcmp(name, value+1))
|
||||
{
|
||||
for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
|
||||
std::cout << std::setw(width);
|
||||
cout.setf(istream::left, istream::adjustfield);
|
||||
std::cout << name;
|
||||
if(value[1])
|
||||
{
|
||||
// macro has a value:
|
||||
std::cout << value << "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
// macro is defined but has no value:
|
||||
std::cout << " [no value]\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X))
|
||||
|
||||
template <class T>
|
||||
void print_expression(const char* expression, T val)
|
||||
{
|
||||
for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
|
||||
std::cout << std::setw(width);
|
||||
std::cout.setf(istream::left, istream::adjustfield);
|
||||
std::cout << expression << "=" << val << std::endl;
|
||||
}
|
||||
|
||||
#define PRINT_EXPRESSION(E) print_expression(#E, E);
|
||||
|
||||
template <class T>
|
||||
void print_byte_order(const char* what, T /* t */ )
|
||||
{
|
||||
T val = 0;
|
||||
unsigned i;
|
||||
for(i = 1; i < sizeof(T); ++i)
|
||||
{
|
||||
val |= (CHAR_BIT * i) << (CHAR_BIT * i);
|
||||
}
|
||||
const char* p = reinterpret_cast<const char*>(&val);
|
||||
|
||||
for(i = 0; i < indent; ++i) std::cout.put(' ');
|
||||
std::cout << std::setw(width);
|
||||
std::cout.setf(istream::left, istream::adjustfield);
|
||||
std::cout << what << "=";
|
||||
for(i = 0; i < sizeof(T); ++i)
|
||||
{
|
||||
std::cout << (int)p[i] << " ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
#define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T())
|
||||
|
||||
template <class T>
|
||||
void print_sign(const char* what, T t)
|
||||
{
|
||||
t = -1;
|
||||
for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
|
||||
std::cout << "Type " << what << " is " << ((t < 0) ? "signed" : "unsigned") << std::endl;
|
||||
}
|
||||
|
||||
#define PRINT_SIGN(T) print_sign(#T, T())
|
||||
|
||||
|
||||
void print_compiler_macros()
|
||||
{
|
||||
std::cout << BOOST_COMPILER << "\n";
|
||||
// Borland options:
|
||||
PRINT_MACRO(__BORLANDC__);
|
||||
PRINT_MACRO(__CDECL__);
|
||||
PRINT_MACRO(_CHAR_UNSIGNED);
|
||||
PRINT_MACRO(__CODEGUARD__);
|
||||
PRINT_MACRO(__CONSOLE__);
|
||||
PRINT_MACRO(_CPPUNWIND);
|
||||
PRINT_MACRO(__cplusplus);
|
||||
PRINT_MACRO(__FLAT__);
|
||||
PRINT_MACRO(__FUNC__);
|
||||
PRINT_MACRO(_M_IX86);
|
||||
PRINT_MACRO(__MSDOS__);
|
||||
PRINT_MACRO(__MT__ );
|
||||
PRINT_MACRO(__PASCAL__);
|
||||
PRINT_MACRO(__STDC__);
|
||||
PRINT_MACRO(__TLS__);
|
||||
PRINT_MACRO(_WCHAR_T);
|
||||
PRINT_MACRO(_Windows);
|
||||
PRINT_MACRO(__WIN32__);
|
||||
PRINT_MACRO(_WIN32);
|
||||
PRINT_MACRO(WIN32);
|
||||
PRINT_MACRO(_RTLDLL);
|
||||
PRINT_MACRO(__DEBUG);
|
||||
|
||||
// Internal MSVC 7 error workaround (Peter Dimov)
|
||||
|
||||
#ifndef _NATIVE_WCHAR_T_DEFINED
|
||||
PRINT_MACRO(_WCHAR_T_DEFINED);
|
||||
#endif
|
||||
// MSVC macros:
|
||||
PRINT_MACRO(_CPPRTTI);
|
||||
PRINT_MACRO(_DLL);
|
||||
PRINT_MACRO(_M_ALPHA);
|
||||
PRINT_MACRO(_M_MPPC);
|
||||
PRINT_MACRO(_M_MRX000);
|
||||
PRINT_MACRO(_M_PPC);
|
||||
PRINT_MACRO(_MFC_VER);
|
||||
PRINT_MACRO(_MSC_EXTENSIONS);
|
||||
PRINT_MACRO(_MSC_VER);
|
||||
PRINT_MACRO(_MT);
|
||||
PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
|
||||
// GNUC options:
|
||||
PRINT_MACRO(__GNUC__);
|
||||
PRINT_MACRO(__GNUC_MINOR__);
|
||||
PRINT_MACRO(__STDC_VERSION__);
|
||||
PRINT_MACRO(__GNUG__);
|
||||
PRINT_MACRO(__STRICT_ANSI__);
|
||||
PRINT_MACRO(__VERSION__);
|
||||
PRINT_MACRO(__OPTIMIZE__);
|
||||
PRINT_MACRO(__CHAR_UNSIGNED__);
|
||||
PRINT_MACRO(__REGISTER_PREFIX__);
|
||||
PRINT_MACRO(__USER_LABEL_PREFIX__);
|
||||
PRINT_MACRO(__INTEL__);
|
||||
PRINT_MACRO(__GNUPRO__);
|
||||
PRINT_MACRO(__EXCEPTIONS);
|
||||
PRINT_MACRO(__FreeBSD__);
|
||||
PRINT_MACRO(__FreeBSD_cc_version);
|
||||
PRINT_MACRO(__ELF__);
|
||||
PRINT_MACRO(__GNUPRO__);
|
||||
PRINT_MACRO(unix);
|
||||
PRINT_MACRO(bsd);
|
||||
PRINT_MACRO(vax);
|
||||
PRINT_MACRO(mc68000);
|
||||
PRINT_MACRO(m68k);
|
||||
PRINT_MACRO(M68020);
|
||||
PRINT_MACRO(_AM29K);
|
||||
PRINT_MACRO(ns32000);
|
||||
PRINT_MACRO(sun);
|
||||
PRINT_MACRO(pyr);
|
||||
PRINT_MACRO(sequent);
|
||||
PRINT_MACRO(__i386__);
|
||||
PRINT_MACRO(__sparc);
|
||||
PRINT_MACRO(__sparc__);
|
||||
PRINT_MACRO(__powerpc__);
|
||||
PRINT_MACRO(__hppa);
|
||||
// HP aCC:
|
||||
PRINT_MACRO(__HP_aCC);
|
||||
PRINT_MACRO(__LP64__);
|
||||
PRINT_MACRO(__RISC2_0__);
|
||||
PRINT_MACRO(__STDCPP__);
|
||||
PRINT_MACRO(__hppa);
|
||||
PRINT_MACRO(__hpux);
|
||||
PRINT_MACRO(__hp9000s800);
|
||||
PRINT_MACRO(__hp9000s700);
|
||||
PRINT_MACRO(_PA_RISC1_1);
|
||||
PRINT_MACRO(__HPUX_SOURCE);
|
||||
// SGI IRIX:
|
||||
PRINT_MACRO(__sgi);
|
||||
PRINT_MACRO(_COMPILER_VERSION);
|
||||
// Sunpro:
|
||||
PRINT_MACRO(__SUNPRO_CC);
|
||||
PRINT_MACRO(__SUNPRO_CC_COMPAT);
|
||||
PRINT_MACRO(__BUILTIN_VA_ARG_INCR);
|
||||
PRINT_MACRO(__sun);
|
||||
PRINT_MACRO(__SVR4);
|
||||
PRINT_MACRO(__unix);
|
||||
PRINT_MACRO(__sparcv9);
|
||||
PRINT_MACRO(__i386);
|
||||
PRINT_MACRO(i386);
|
||||
// Metrowerks
|
||||
PRINT_MACRO(__MWERKS__);
|
||||
PRINT_MACRO(__MSL__);
|
||||
PRINT_MACRO(__MSL_CPP__);
|
||||
PRINT_MACRO(__A5__);
|
||||
PRINT_MACRO(__embedded_cplusplus);
|
||||
PRINT_MACRO(__fourbyteints__);
|
||||
PRINT_MACRO(__IEEEdoubles__);
|
||||
PRINT_MACRO(__MC68K__);
|
||||
PRINT_MACRO(__MC68020__);
|
||||
PRINT_MACRO(__MC68881__);
|
||||
PRINT_MACRO(__MIPS__);
|
||||
PRINT_MACRO(__MIPS_ISA2__);
|
||||
PRINT_MACRO(__MIPS_ISA3__);
|
||||
PRINT_MACRO(__MIPS_ISA4__);
|
||||
PRINT_MACRO(__MWBROWSER__);
|
||||
PRINT_MACRO(__profile__);
|
||||
PRINT_MACRO(__powerc);
|
||||
PRINT_MACRO(_powerc);
|
||||
PRINT_MACRO(__POWERPC__);
|
||||
PRINT_MACRO(macintosh);
|
||||
PRINT_MACRO(__MACH__);
|
||||
PRINT_MACRO(__APPLE__);
|
||||
PRINT_MACRO(__APPLE_CC__);
|
||||
// MPW (MrCpp and SCpp)
|
||||
PRINT_MACRO(__MRC__);
|
||||
PRINT_MACRO(__SC__);
|
||||
PRINT_MACRO(__FPCE__);
|
||||
PRINT_MACRO(__FPCE_IEEE__);
|
||||
PRINT_MACRO(MPW_CPLUS);
|
||||
PRINT_MACRO(MPW_C);
|
||||
PRINT_MACRO(__MC601);
|
||||
PRINT_MACRO(__POWERPC);
|
||||
PRINT_MACRO(__useAppleExts__);
|
||||
PRINT_MACRO(powerc);
|
||||
PRINT_MACRO(MC68000);
|
||||
PRINT_MACRO(THINK_PLUS);
|
||||
PRINT_MACRO(mc68881);
|
||||
PRINT_MACRO(__FAR_CODE__);
|
||||
PRINT_MACRO(__FAR_DATA__);
|
||||
PRINT_MACRO(__CFM68K__);
|
||||
// EDG
|
||||
PRINT_MACRO(__EDG__);
|
||||
PRINT_MACRO(__EDG_VERSION__);
|
||||
PRINT_MACRO(_BOOL);
|
||||
PRINT_MACRO(_EXPLICIT);
|
||||
PRINT_MACRO(__SIGNED_CHARS__);
|
||||
PRINT_MACRO(_TYPENAME);
|
||||
PRINT_MACRO(_WCHAR_T);
|
||||
PRINT_MACRO(__ARRAY_OPERATORS);
|
||||
PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION);
|
||||
PRINT_MACRO(__EDG_IMPLICIT_USING_STD);
|
||||
PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES);
|
||||
|
||||
// misc compilers not covered so far:
|
||||
PRINT_MACRO(__ICC);
|
||||
PRINT_MACRO(__ICL);
|
||||
PRINT_MACRO(__INTEL_COMPILER);
|
||||
PRINT_MACRO(__USLC__);
|
||||
PRINT_MACRO(__DECCXX);
|
||||
PRINT_MACRO(__IBMCPP__);
|
||||
PRINT_MACRO(_REENTRANT);
|
||||
PRINT_MACRO(_PTHREADS);
|
||||
PRINT_MACRO(__STDC_HOSTED__);
|
||||
PRINT_MACRO(__COMO__);
|
||||
PRINT_MACRO(__COMO_VERSION__);
|
||||
}
|
||||
|
||||
void print_stdlib_macros()
|
||||
{
|
||||
std::cout << BOOST_STDLIB << std::endl;
|
||||
#ifdef _RWSTD_VER
|
||||
// Rogue Wave 2.x config options:
|
||||
PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
|
||||
PRINT_MACRO(_RWSTD_ALLOCATOR);
|
||||
PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED);
|
||||
PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED);
|
||||
PRINT_MACRO(_RWSTD_BOUNDS_CHECKING);
|
||||
PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE);
|
||||
PRINT_MACRO(_RWSTD_DEFAULT_PRECISION);
|
||||
PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED);
|
||||
PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD);
|
||||
PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED);
|
||||
PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT);
|
||||
PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS);
|
||||
PRINT_MACRO(_RWSTD_MESSAGE);
|
||||
PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT);
|
||||
PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF);
|
||||
PRINT_MACRO(_RWSTD_NO_ARG_MATCH);
|
||||
PRINT_MACRO(_RWSTD_NO_BAD_CAST);
|
||||
PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH);
|
||||
PRINT_MACRO(_RWSTD_NO_BOOL);
|
||||
PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR);
|
||||
PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS);
|
||||
PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC);
|
||||
PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
|
||||
PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS);
|
||||
PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF);
|
||||
PRINT_MACRO(_RWSTD_NO_CONST_INST);
|
||||
PRINT_MACRO(_RWSTD_NO_CTOR_RETURN);
|
||||
PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM);
|
||||
PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
|
||||
PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN);
|
||||
PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN);
|
||||
PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF);
|
||||
PRINT_MACRO(_RWSTD_NO_EX_SPEC);
|
||||
PRINT_MACRO(_RWSTD_NO_EXCEPTIONS);
|
||||
PRINT_MACRO(_RWSTD_NO_EXPLICIT);
|
||||
PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG);
|
||||
PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
|
||||
PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION);
|
||||
PRINT_MACRO(_RWSTD_NO_EXTENSION);
|
||||
PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS);
|
||||
PRINT_MACRO(_RWSTD_NO_FPOS_T);
|
||||
PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES);
|
||||
PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC);
|
||||
PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY);
|
||||
PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ);
|
||||
PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS);
|
||||
PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
|
||||
PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF);
|
||||
PRINT_MACRO(_RWSTD_NO_LDIV);
|
||||
PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE);
|
||||
PRINT_MACRO(_RWSTD_NO_LOCALE);
|
||||
PRINT_MACRO(_RWSTD_NO_LONG_NAME);
|
||||
PRINT_MACRO(_RWSTD_NO_LONGDOUBLE);
|
||||
PRINT_MACRO(_RWSTD_NO_MBSTATE_T);
|
||||
PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES);
|
||||
PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES);
|
||||
PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM);
|
||||
PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR);
|
||||
PRINT_MACRO(_RWSTD_NO_MEMMOVE);
|
||||
PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY);
|
||||
PRINT_MACRO(_RWSTD_NO_MUTABLE);
|
||||
PRINT_MACRO(_RWSTD_NO_NAME_INJECTION);
|
||||
PRINT_MACRO(_RWSTD_NO_NAMESPACE);
|
||||
PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES);
|
||||
PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS);
|
||||
PRINT_MACRO(_RWSTD_NO_NEW_DECL);
|
||||
PRINT_MACRO(_RWSTD_NO_NEW_HEADER);
|
||||
PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX);
|
||||
PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN);
|
||||
PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS);
|
||||
PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
|
||||
PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW);
|
||||
PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
|
||||
PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR);
|
||||
PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD);
|
||||
PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE);
|
||||
PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
|
||||
PRINT_MACRO(_RWSTD_NO_STATIC_CAST);
|
||||
PRINT_MACRO(_RWSTD_NO_STATIC_DEF);
|
||||
PRINT_MACRO(_RWSTD_NO_STATIC_DEF2);
|
||||
PRINT_MACRO(_RWSTD_NO_STATIC_DEF3);
|
||||
PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF);
|
||||
PRINT_MACRO(_RWSTD_NO_STI_SIMPLE);
|
||||
PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE);
|
||||
PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE);
|
||||
PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC);
|
||||
PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
|
||||
PRINT_MACRO(_RWSTD_NO_SWPRINTF);
|
||||
PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
|
||||
PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE);
|
||||
PRINT_MACRO(_RWSTD_NO_THREADS);
|
||||
PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW);
|
||||
PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED);
|
||||
PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST);
|
||||
PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD);
|
||||
PRINT_MACRO(_RWSTD_NO_TYPENAME);
|
||||
PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND);
|
||||
PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF);
|
||||
PRINT_MACRO(_RWSTD_NO_WCHAR_H);
|
||||
PRINT_MACRO(_RWSTD_NO_WCTYPE_H);
|
||||
PRINT_MACRO(_RWSTD_NO_WIDE_CHAR);
|
||||
PRINT_MACRO(_RWSTD_NO_WINT_TYPE);
|
||||
PRINT_MACRO(_RWSTD_NO_WSTR);
|
||||
PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
|
||||
PRINT_MACRO(_RWSTD_POSIX_D10_THREADS);
|
||||
PRINT_MACRO(_RWSTD_POSIX_THREADS);
|
||||
PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP);
|
||||
PRINT_MACRO(_RWSTD_SOLARIS_THREADS);
|
||||
PRINT_MACRO(_RWSTD_STRUCT_TM_TZ);
|
||||
PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM);
|
||||
#elif defined(__STD_RWCOMPILER_H__)
|
||||
// Rogue Wave 1.x std lib:
|
||||
PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
|
||||
PRINT_MACRO(RWSTD_ALLOCATOR);
|
||||
PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED);
|
||||
PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED);
|
||||
PRINT_MACRO(RWSTD_BOUNDS_CHECKING);
|
||||
PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE);
|
||||
PRINT_MACRO(RWSTD_DEFAULT_PRECISION);
|
||||
PRINT_MACRO(RWSTD_EXCEPTION_DEFINED);
|
||||
PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD);
|
||||
PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED);
|
||||
PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT);
|
||||
PRINT_MACRO(RWSTD_LOCALIZED_ERRORS);
|
||||
PRINT_MACRO(RWSTD_MESSAGE);
|
||||
PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT);
|
||||
PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF);
|
||||
PRINT_MACRO(RWSTD_NO_ARG_MATCH);
|
||||
PRINT_MACRO(RWSTD_NO_BAD_CAST);
|
||||
PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH);
|
||||
PRINT_MACRO(RWSTD_NO_BOOL);
|
||||
PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR);
|
||||
PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS);
|
||||
PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC);
|
||||
PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
|
||||
PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS);
|
||||
PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF);
|
||||
PRINT_MACRO(RWSTD_NO_CONST_INST);
|
||||
PRINT_MACRO(RWSTD_NO_CTOR_RETURN);
|
||||
PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM);
|
||||
PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
|
||||
PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN);
|
||||
PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN);
|
||||
PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF);
|
||||
PRINT_MACRO(RWSTD_NO_EX_SPEC);
|
||||
PRINT_MACRO(RWSTD_NO_EXCEPTIONS);
|
||||
PRINT_MACRO(RWSTD_NO_EXPLICIT);
|
||||
PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG);
|
||||
PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
|
||||
PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION);
|
||||
PRINT_MACRO(RWSTD_NO_EXTENSION);
|
||||
PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS);
|
||||
PRINT_MACRO(RWSTD_NO_FPOS_T);
|
||||
PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES);
|
||||
PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC);
|
||||
PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY);
|
||||
PRINT_MACRO(RWSTD_NO_GLOBAL_TZ);
|
||||
PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS);
|
||||
PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
|
||||
PRINT_MACRO(RWSTD_NO_INT_TYPEDEF);
|
||||
PRINT_MACRO(RWSTD_NO_LDIV);
|
||||
PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE);
|
||||
PRINT_MACRO(RWSTD_NO_LOCALE);
|
||||
PRINT_MACRO(RWSTD_NO_LONG_NAME);
|
||||
PRINT_MACRO(RWSTD_NO_LONGDOUBLE);
|
||||
PRINT_MACRO(RWSTD_NO_MBSTATE_T);
|
||||
PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES);
|
||||
PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES);
|
||||
PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM);
|
||||
PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR);
|
||||
PRINT_MACRO(RWSTD_NO_MEMMOVE);
|
||||
PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY);
|
||||
PRINT_MACRO(RWSTD_NO_MUTABLE);
|
||||
PRINT_MACRO(RWSTD_NO_NAME_INJECTION);
|
||||
PRINT_MACRO(RWSTD_NO_NAMESPACE);
|
||||
PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES);
|
||||
PRINT_MACRO(RWSTD_NO_NEW_BRACKETS);
|
||||
PRINT_MACRO(RWSTD_NO_NEW_DECL);
|
||||
PRINT_MACRO(RWSTD_NO_NEW_HEADER);
|
||||
PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX);
|
||||
PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN);
|
||||
PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS);
|
||||
PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
|
||||
PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW);
|
||||
PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
|
||||
PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR);
|
||||
PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD);
|
||||
PRINT_MACRO(RWSTD_NO_RET_TEMPLATE);
|
||||
PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
|
||||
PRINT_MACRO(RWSTD_NO_STATIC_CAST);
|
||||
PRINT_MACRO(RWSTD_NO_STATIC_DEF);
|
||||
PRINT_MACRO(RWSTD_NO_STATIC_DEF2);
|
||||
PRINT_MACRO(RWSTD_NO_STATIC_DEF3);
|
||||
PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF);
|
||||
PRINT_MACRO(RWSTD_NO_STI_SIMPLE);
|
||||
PRINT_MACRO(RWSTD_NO_STI_TEMPLATE);
|
||||
PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE);
|
||||
PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC);
|
||||
PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
|
||||
PRINT_MACRO(RWSTD_NO_SWPRINTF);
|
||||
PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
|
||||
PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE);
|
||||
PRINT_MACRO(RWSTD_NO_THREADS);
|
||||
PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW);
|
||||
PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED);
|
||||
PRINT_MACRO(RWSTD_NO_TYPEDEF_INST);
|
||||
PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD);
|
||||
PRINT_MACRO(RWSTD_NO_TYPENAME);
|
||||
PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND);
|
||||
PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF);
|
||||
PRINT_MACRO(RWSTD_NO_WCHAR_H);
|
||||
PRINT_MACRO(RWSTD_NO_WCTYPE_H);
|
||||
PRINT_MACRO(RWSTD_NO_WIDE_CHAR);
|
||||
PRINT_MACRO(RWSTD_NO_WINT_TYPE);
|
||||
PRINT_MACRO(RWSTD_NO_WSTR);
|
||||
PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
|
||||
PRINT_MACRO(RWSTD_POSIX_D10_THREADS);
|
||||
PRINT_MACRO(RWSTD_POSIX_THREADS);
|
||||
PRINT_MACRO(RWSTD_REQUIRES_IEEEFP);
|
||||
PRINT_MACRO(RWSTD_SOLARIS_THREADS);
|
||||
PRINT_MACRO(RWSTD_STRUCT_TM_TZ);
|
||||
PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM);
|
||||
#endif
|
||||
// Dinkumware options:
|
||||
PRINT_MACRO(_CPPLIB_VER);
|
||||
PRINT_MACRO(_GLOBAL_USING);
|
||||
PRINT_MACRO(_HAS_EXCEPTIONS);
|
||||
PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
|
||||
PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
|
||||
// STLPort and generic SGI STL options:
|
||||
PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR);
|
||||
PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS);
|
||||
PRINT_MACRO(__SGI_STL_PORT);
|
||||
PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS);
|
||||
PRINT_MACRO(__STL_BASE_MATCH_BUG);
|
||||
PRINT_MACRO(__STL_BASE_TYPEDEF_BUG);
|
||||
PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG);
|
||||
PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE);
|
||||
PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG);
|
||||
PRINT_MACRO(__STL_DEBUG);
|
||||
PRINT_MACRO(__STL_DEBUG_ALLOC);
|
||||
PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG);
|
||||
PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM);
|
||||
PRINT_MACRO(__STL_DONT_REDEFINE_STD);
|
||||
PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF);
|
||||
PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS);
|
||||
PRINT_MACRO(__STL_HAS_NO_NAMESPACES);
|
||||
PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS);
|
||||
PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS);
|
||||
PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD);
|
||||
PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES);
|
||||
PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION);
|
||||
PRINT_MACRO(__STL_LONG_LONG);
|
||||
PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS);
|
||||
PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG);
|
||||
PRINT_MACRO(__STL_NEED_EXPLICIT);
|
||||
PRINT_MACRO(__STL_NEED_MUTABLE);
|
||||
PRINT_MACRO(__STL_NEED_TYPENAME);
|
||||
PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG);
|
||||
PRINT_MACRO(__STL_NO_BAD_ALLOC);
|
||||
PRINT_MACRO(__STL_NO_BOOL);
|
||||
PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION);
|
||||
PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS);
|
||||
PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM);
|
||||
PRINT_MACRO(__STL_NO_EXCEPTION_HEADER);
|
||||
PRINT_MACRO(__STL_NO_EXCEPTION_SPEC);
|
||||
PRINT_MACRO(__STL_NO_EXCEPTIONS);
|
||||
PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
|
||||
PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES);
|
||||
PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER);
|
||||
PRINT_MACRO(__STL_NO_IOSTREAMS);
|
||||
PRINT_MACRO(__STL_NO_LONG_DOUBLE);
|
||||
PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES);
|
||||
PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD);
|
||||
PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES);
|
||||
PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION);
|
||||
PRINT_MACRO(__STL_NO_NAMESPACES);
|
||||
PRINT_MACRO(__STL_NO_NEW_IOSTREAMS);
|
||||
PRINT_MACRO(__STL_NO_NEW_NEW_HEADER);
|
||||
PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS);
|
||||
PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX);
|
||||
PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS);
|
||||
PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE);
|
||||
PRINT_MACRO(__STL_NO_SGI_IOSTREAMS);
|
||||
PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA);
|
||||
PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS);
|
||||
PRINT_MACRO(__STL_NO_WCHAR_T);
|
||||
PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG);
|
||||
PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG);
|
||||
PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
|
||||
PRINT_MACRO(__STL_RAND48);
|
||||
PRINT_MACRO(__STL_STATIC_ARRAY_BUG);
|
||||
PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
|
||||
PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
|
||||
PRINT_MACRO(__STL_THROW_RETURN_BUG);
|
||||
PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG);
|
||||
PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG);
|
||||
PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE);
|
||||
PRINT_MACRO(__STL_USE_ABBREVS);
|
||||
PRINT_MACRO(__STL_USE_DEFALLOC);
|
||||
PRINT_MACRO(__STL_USE_MALLOC);
|
||||
PRINT_MACRO(__STL_USE_NEW_C_HEADERS);
|
||||
PRINT_MACRO(__STL_USE_NEW_IOSTREAMS);
|
||||
PRINT_MACRO(__STL_USE_NEWALLOC);
|
||||
PRINT_MACRO(__STL_USE_OWN_NAMESPACE);
|
||||
PRINT_MACRO(__STL_USE_SGI_ALLOCATORS);
|
||||
PRINT_MACRO(__STL_WCHAR_T_IS_USHORT);
|
||||
PRINT_MACRO(__STL_WEAK_ATTRIBUTE);
|
||||
PRINT_MACRO(__STL_YVALS_H);
|
||||
PRINT_MACRO(_NOTHREADS);
|
||||
PRINT_MACRO(_PTHREADS);
|
||||
#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400)
|
||||
PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS);
|
||||
PRINT_MACRO(_STLP_BASE_MATCH_BUG);
|
||||
PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG);
|
||||
PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG);
|
||||
PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE);
|
||||
PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG);
|
||||
PRINT_MACRO(_STLP_DEBUG);
|
||||
PRINT_MACRO(_STLP_DEBUG_ALLOC);
|
||||
PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG);
|
||||
PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM);
|
||||
PRINT_MACRO(_STLP_DONT_REDEFINE_STD);
|
||||
PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF);
|
||||
PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS);
|
||||
PRINT_MACRO(_STLP_HAS_NO_NAMESPACES);
|
||||
PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS);
|
||||
PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS);
|
||||
PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD);
|
||||
PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES);
|
||||
PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION);
|
||||
PRINT_MACRO(_STLP_LONG_LONG);
|
||||
PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS);
|
||||
PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG);
|
||||
PRINT_MACRO(_STLP_NEED_EXPLICIT);
|
||||
PRINT_MACRO(_STLP_NEED_MUTABLE);
|
||||
PRINT_MACRO(_STLP_NEED_TYPENAME);
|
||||
PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG);
|
||||
PRINT_MACRO(_STLP_NO_ARROW_OPERATOR);
|
||||
PRINT_MACRO(_STLP_NO_BAD_ALLOC);
|
||||
PRINT_MACRO(_STLP_NO_BOOL);
|
||||
PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION);
|
||||
PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS);
|
||||
PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM);
|
||||
PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER);
|
||||
PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC);
|
||||
PRINT_MACRO(_STLP_NO_EXCEPTIONS);
|
||||
PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
|
||||
PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES);
|
||||
PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER);
|
||||
PRINT_MACRO(_STLP_NO_IOSTREAMS);
|
||||
PRINT_MACRO(_STLP_NO_LONG_DOUBLE);
|
||||
PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES);
|
||||
PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD);
|
||||
PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES);
|
||||
PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION);
|
||||
PRINT_MACRO(_STLP_NO_NAMESPACES);
|
||||
PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS);
|
||||
PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER);
|
||||
PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS);
|
||||
PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX);
|
||||
PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS);
|
||||
PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE);
|
||||
PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS);
|
||||
PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA);
|
||||
PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS);
|
||||
PRINT_MACRO(_STLP_NO_WCHAR_T);
|
||||
PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG);
|
||||
PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG);
|
||||
PRINT_MACRO(_STLP_OWN_IOSTREAMS);
|
||||
PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
|
||||
PRINT_MACRO(_STLP_RAND48);
|
||||
PRINT_MACRO(_STLP_STATIC_ARRAY_BUG);
|
||||
PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
|
||||
PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
|
||||
PRINT_MACRO(_STLP_THROW_RETURN_BUG);
|
||||
PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG);
|
||||
PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG);
|
||||
PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE);
|
||||
PRINT_MACRO(_STLP_USE_ABBREVS);
|
||||
PRINT_MACRO(_STLP_USE_DEFALLOC);
|
||||
PRINT_MACRO(_STLP_USE_MALLOC);
|
||||
PRINT_MACRO(_STLP_USE_NEW_C_HEADERS);
|
||||
PRINT_MACRO(_STLP_USE_NEWALLOC);
|
||||
PRINT_MACRO(_STLP_USE_OWN_NAMESPACE);
|
||||
PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS);
|
||||
PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT);
|
||||
PRINT_MACRO(_STLP_WEAK_ATTRIBUTE);
|
||||
PRINT_MACRO(_STLP_YVALS_H);
|
||||
#endif
|
||||
PRINT_MACRO(__GLIBCPP__);
|
||||
PRINT_MACRO(_GLIBCPP_USE_WCHAR_T);
|
||||
PRINT_MACRO(_GLIBCPP_VERSION);
|
||||
// Modena C++ standard library
|
||||
PRINT_MACRO(MSIPL_ANSI_HEADER);
|
||||
PRINT_MACRO(MSIPL_BOOL_BUILTIN);
|
||||
PRINT_MACRO(MSIPL_DEF_EXPLICIT);
|
||||
PRINT_MACRO(MSIPL_DEF_TEMPARG);
|
||||
PRINT_MACRO(MSIPL_EXPINST_ALLOWED);
|
||||
PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG);
|
||||
PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT);
|
||||
PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG);
|
||||
PRINT_MACRO(MSIPL_MEMBER_TEMPLATE);
|
||||
PRINT_MACRO(MSIPL_MULTITHREAD);
|
||||
PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG);
|
||||
PRINT_MACRO(MSIPL_PARTIAL_TEMPL);
|
||||
PRINT_MACRO(MSIPL_STATIC_CONST_INIT);
|
||||
PRINT_MACRO(MSIPL_TEMPL_NEWSPEC);
|
||||
PRINT_MACRO(MSIPL_TYPENAME);
|
||||
PRINT_MACRO(MSIPL_USING_NAMESPACE);
|
||||
PRINT_MACRO(MSIPL_WCHART);
|
||||
}
|
||||
|
||||
void print_platform_macros()
|
||||
{
|
||||
std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl;
|
||||
// signedness:
|
||||
PRINT_SIGN(char);
|
||||
PRINT_SIGN(wchar_t);
|
||||
// byte ordering:
|
||||
PRINT_ORDER(short);
|
||||
PRINT_ORDER(int);
|
||||
PRINT_ORDER(long);
|
||||
// sizes:
|
||||
PRINT_EXPRESSION(sizeof(wchar_t));
|
||||
PRINT_EXPRESSION(sizeof(short));
|
||||
PRINT_EXPRESSION(sizeof(int));
|
||||
PRINT_EXPRESSION(sizeof(long));
|
||||
PRINT_EXPRESSION(sizeof(float));
|
||||
PRINT_EXPRESSION(sizeof(double));
|
||||
PRINT_EXPRESSION(sizeof(long double));
|
||||
// limits:
|
||||
PRINT_MACRO(CHAR_BIT);
|
||||
PRINT_MACRO(CHAR_MAX);
|
||||
PRINT_MACRO(WCHAR_MAX);
|
||||
PRINT_MACRO(SHRT_MAX);
|
||||
PRINT_MACRO(INT_MAX);
|
||||
PRINT_MACRO(LONG_MAX);
|
||||
PRINT_MACRO(LLONG_MAX);
|
||||
PRINT_MACRO(LONG_LONG_MAX);
|
||||
PRINT_MACRO(LONGLONG_MAX);
|
||||
// general C99:
|
||||
PRINT_MACRO(__STDC_IEC_559__);
|
||||
PRINT_MACRO(__STDC_IEC_559_COMPLEX__);
|
||||
PRINT_MACRO(__STDC_ISO_10646__);
|
||||
// GNU:
|
||||
PRINT_MACRO(__GLIBC__);
|
||||
PRINT_MACRO(__GLIBC_MINOR__);
|
||||
PRINT_MACRO(__GNU_LIBRARY__);
|
||||
PRINT_MACRO(_BSD_SOURCE);
|
||||
PRINT_MACRO(_FILE_OFFSET_BITS);
|
||||
PRINT_MACRO(_GNU_SOURCE);
|
||||
PRINT_MACRO(_ISOC99_SOURCE);
|
||||
PRINT_MACRO(_ISOC9X_SOURCE);
|
||||
PRINT_MACRO(_LARGEFILE_SOURCE);
|
||||
PRINT_MACRO(_LARGEFILE64_SOURCE);
|
||||
PRINT_MACRO(_SVID_SOURCE);
|
||||
PRINT_MACRO(_THREAD_SAFE);
|
||||
PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
|
||||
PRINT_MACRO(XPG);
|
||||
// POSIX:
|
||||
PRINT_MACRO(_POSIX_ADVISORY_INFO);
|
||||
PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
|
||||
PRINT_MACRO(_POSIX_BARRIERS);
|
||||
PRINT_MACRO(_POSIX_C_SOURCE);
|
||||
PRINT_MACRO(_POSIX_CHOWN_RESTRICTED);
|
||||
PRINT_MACRO(_POSIX_CLOCK_SELECTION);
|
||||
PRINT_MACRO(_POSIX_CPUTIME);
|
||||
PRINT_MACRO(_POSIX_FSYNC);
|
||||
PRINT_MACRO(_POSIX_JOB_CONTROL);
|
||||
PRINT_MACRO(_POSIX_MAPPED_FILES);
|
||||
PRINT_MACRO(_POSIX_MEMLOCK);
|
||||
PRINT_MACRO(_POSIX_MEMLOCK_RANGE);
|
||||
PRINT_MACRO(_POSIX_MEMORY_PROTECTION);
|
||||
PRINT_MACRO(_POSIX_MESSAGE_PASSING);
|
||||
PRINT_MACRO(_POSIX_MONOTONIC_CLOCK);
|
||||
PRINT_MACRO(_POSIX_NO_TRUNC);
|
||||
PRINT_MACRO(_POSIX_PRIORITIZED_IO);
|
||||
PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING);
|
||||
PRINT_MACRO(_POSIX_RAW_SOCKETS);
|
||||
PRINT_MACRO(_POSIX_READER_WRITER_LOCKS);
|
||||
PRINT_MACRO(_POSIX_REALTIME_SIGNALS);
|
||||
PRINT_MACRO(_POSIX_REGEXP);
|
||||
PRINT_MACRO(_POSIX_SAVED_IDS);
|
||||
PRINT_MACRO(_POSIX_SEMAPHORES);
|
||||
PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
|
||||
PRINT_MACRO(_POSIX_SHELL);
|
||||
PRINT_MACRO(_POSIX_SOURCE);
|
||||
PRINT_MACRO(_POSIX_SPAWN);
|
||||
PRINT_MACRO(_POSIX_SPIN_LOCKS);
|
||||
PRINT_MACRO(_POSIX_SPORADIC_SERVER);
|
||||
PRINT_MACRO(_POSIX_SYNCHRONIZED_IO);
|
||||
PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR);
|
||||
PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
|
||||
PRINT_MACRO(_POSIX_THREAD_CPUTIME);
|
||||
PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT);
|
||||
PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT);
|
||||
PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
|
||||
PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED);
|
||||
PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
|
||||
PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER);
|
||||
PRINT_MACRO(_POSIX_THREADS);
|
||||
PRINT_MACRO(_POSIX_TIMEOUTS);
|
||||
PRINT_MACRO(_POSIX_TIMERS);
|
||||
PRINT_MACRO(_POSIX_TRACE);
|
||||
PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER);
|
||||
PRINT_MACRO(_POSIX_TRACE_INHERIT);
|
||||
PRINT_MACRO(_POSIX_TRACE_LOG);
|
||||
PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
|
||||
PRINT_MACRO(_POSIX_VDISABLE);
|
||||
PRINT_MACRO(_POSIX_VERSION);
|
||||
PRINT_MACRO(_POSIX2_C_BIND);
|
||||
PRINT_MACRO(_POSIX2_C_DEV);
|
||||
PRINT_MACRO(_POSIX2_CHAR_TERM);
|
||||
PRINT_MACRO(_POSIX2_FORT_DEV);
|
||||
PRINT_MACRO(_POSIX2_FORT_RUN);
|
||||
PRINT_MACRO(_POSIX2_LOCALEDEF);
|
||||
PRINT_MACRO(_POSIX2_PBS);
|
||||
PRINT_MACRO(_POSIX2_PBS_ACCOUNTING);
|
||||
PRINT_MACRO(_POSIX2_PBS_CHECKPOINT);
|
||||
PRINT_MACRO(_POSIX2_PBS_LOCATE);
|
||||
PRINT_MACRO(_POSIX2_PBS_MESSAGE);
|
||||
PRINT_MACRO(_POSIX2_PBS_TRACK);
|
||||
PRINT_MACRO(_POSIX2_SW_DEV);
|
||||
PRINT_MACRO(_POSIX2_UPE);
|
||||
PRINT_MACRO(_POSIX2_VERSION);
|
||||
PRINT_MACRO(_V6_ILP32_OFF32);
|
||||
PRINT_MACRO(_V6_ILP32_OFFBIG);
|
||||
PRINT_MACRO(_V6_LP64_OFF64);
|
||||
PRINT_MACRO(_V6_LPBIG_OFFBIG);
|
||||
PRINT_MACRO(_XBS5_ILP32_OFF32);
|
||||
PRINT_MACRO(_XBS5_ILP32_OFFBIG);
|
||||
PRINT_MACRO(_XBS5_LP64_OFF64);
|
||||
PRINT_MACRO(_XBS5_LPBIG_OFFBIG);
|
||||
PRINT_MACRO(_XOPEN_CRYPT);
|
||||
PRINT_MACRO(_XOPEN_ENH_I18N);
|
||||
PRINT_MACRO(_XOPEN_LEGACY);
|
||||
PRINT_MACRO(_XOPEN_REALTIME);
|
||||
PRINT_MACRO(_XOPEN_REALTIME_THREADS);
|
||||
PRINT_MACRO(_XOPEN_SHM);
|
||||
PRINT_MACRO(_XOPEN_SOURCE);
|
||||
PRINT_MACRO(_XOPEN_STREAMS);
|
||||
PRINT_MACRO(_XOPEN_UNIX);
|
||||
PRINT_MACRO(_XOPEN_VERSION);
|
||||
}
|
||||
|
||||
void print_boost_macros()
|
||||
{
|
||||
std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl;
|
||||
PRINT_MACRO(BOOST_DECL);
|
||||
PRINT_MACRO(BOOST_HAS_BETHREADS);
|
||||
PRINT_MACRO(BOOST_HAS_HASH);
|
||||
PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET);
|
||||
PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
|
||||
PRINT_MACRO(BOOST_HAS_PTHREADS);
|
||||
PRINT_MACRO(BOOST_HAS_SLIST);
|
||||
PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
|
||||
PRINT_MACRO(BOOST_HAS_THREADS);
|
||||
PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
|
||||
PRINT_MACRO(BOOST_HAS_UNISTD_H);
|
||||
PRINT_MACRO(BOOST_HAS_WINTHREADS);
|
||||
PRINT_MACRO(BOOST_MSVC);
|
||||
PRINT_MACRO(BOOST_MSVC_STD_ITERATOR);
|
||||
PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES);
|
||||
PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP);
|
||||
PRINT_MACRO(BOOST_NO_AUTO_PTR);
|
||||
PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
|
||||
PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS);
|
||||
PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS);
|
||||
PRINT_MACRO(BOOST_NO_CWCHAR);
|
||||
PRINT_MACRO(BOOST_NO_CWCTYPE);
|
||||
PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
|
||||
PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS);
|
||||
PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING);
|
||||
PRINT_MACRO(BOOST_NO_HASH);
|
||||
PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION);
|
||||
PRINT_MACRO(BOOST_NO_INT64_T);
|
||||
PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T);
|
||||
PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T);
|
||||
PRINT_MACRO(BOOST_NO_LIMITS);
|
||||
PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS);
|
||||
PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
|
||||
PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
|
||||
PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES);
|
||||
PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
|
||||
PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
|
||||
PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
|
||||
PRINT_MACRO(BOOST_NO_SLIST);
|
||||
PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
|
||||
PRINT_MACRO(BOOST_NO_STD_ITERATOR);
|
||||
PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS);
|
||||
PRINT_MACRO(BOOST_NO_STD_LOCALE);
|
||||
PRINT_MACRO(BOOST_NO_STD_MESSAGES);
|
||||
PRINT_MACRO(BOOST_NO_STD_MIN_MAX);
|
||||
PRINT_MACRO(BOOST_NO_STD_USE_FACET);
|
||||
PRINT_MACRO(BOOST_NO_STD_WSTRING);
|
||||
PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
|
||||
PRINT_MACRO(BOOST_NO_STRINGSTREAM);
|
||||
PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
|
||||
PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
|
||||
PRINT_MACRO(BOOST_DISABLE_THREADS);
|
||||
PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
|
||||
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
|
||||
PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
|
||||
PRINT_MACRO(BOOST_HAS_STDINT_H);
|
||||
}
|
||||
|
||||
void print_separator()
|
||||
{
|
||||
std::cout <<
|
||||
"\n\n*********************************************************************\n\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
// boost compiler workaround defines
|
||||
print_compiler_macros();
|
||||
print_separator();
|
||||
print_stdlib_macros();
|
||||
print_separator();
|
||||
print_platform_macros();
|
||||
print_separator();
|
||||
print_boost_macros();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user