Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:30:08

0001 //  (C) Copyright John Maddock 2001 - 2002. 
0002 //  (C) Copyright Darin Adler 2001. 
0003 //  (C) Copyright Jens Maurer 2001. 
0004 //  Use, modification and distribution are subject to the 
0005 //  Boost Software License, Version 1.0. (See accompanying file 
0006 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0007 
0008 //  See http://www.boost.org for most recent version.
0009 
0010 //  STLPort standard library config:
0011 
0012 #if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
0013 #  include <cstddef>
0014 #  if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
0015 #      error "This is not STLPort!"
0016 #  endif
0017 #endif
0018 
0019 // Apple doesn't seem to reliably defined a *unix* macro
0020 #if !defined(CYGWIN) && (  defined(__unix__)  \
0021                         || defined(__unix)    \
0022                         || defined(unix)      \
0023                         || defined(__APPLE__) \
0024                         || defined(__APPLE)   \
0025                         || defined(APPLE))
0026 #  include <unistd.h>
0027 #endif
0028 
0029 //
0030 // __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
0031 // for versions prior to 4.1(beta)
0032 //
0033 #if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
0034 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
0035 #endif
0036 
0037 //
0038 // If STLport thinks that there is no partial specialisation, then there is no
0039 // std::iterator traits:
0040 //
0041 #if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
0042 #  define BOOST_NO_STD_ITERATOR_TRAITS
0043 #endif
0044 
0045 //
0046 // No new style iostreams on GCC without STLport's iostreams enabled:
0047 //
0048 #if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
0049 #  define BOOST_NO_STRINGSTREAM
0050 #endif
0051 
0052 //
0053 // No new iostreams implies no std::locale, and no std::stringstream:
0054 //
0055 #if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
0056 #  define BOOST_NO_STD_LOCALE
0057 #  define BOOST_NO_STRINGSTREAM
0058 #endif
0059 
0060 //
0061 // If the streams are not native, and we have a "using ::x" compiler bug
0062 // then the io stream facets are not available in namespace std::
0063 //
0064 #ifdef _STLPORT_VERSION
0065 #  if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(BOOST_BORLANDC)
0066 #     define BOOST_NO_STD_LOCALE
0067 #  endif
0068 #else
0069 #  if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(BOOST_BORLANDC)
0070 #     define BOOST_NO_STD_LOCALE
0071 #  endif
0072 #endif
0073 
0074 #if defined(_STLPORT_VERSION) && (_STLPORT_VERSION >= 0x520)
0075 #  define BOOST_HAS_TR1_UNORDERED_SET
0076 #  define BOOST_HAS_TR1_UNORDERED_MAP
0077 #endif
0078 //
0079 // Without member template support enabled, their are no template
0080 // iterate constructors, and no std::allocator:
0081 //
0082 #if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
0083 #  define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
0084 #  define BOOST_NO_STD_ALLOCATOR
0085 #endif
0086 //
0087 // however we always have at least a partial allocator:
0088 //
0089 #define BOOST_HAS_PARTIAL_STD_ALLOCATOR
0090 
0091 #if !defined(_STLP_MEMBER_TEMPLATE_CLASSES) || defined(_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
0092 #  define BOOST_NO_STD_ALLOCATOR
0093 #endif
0094 
0095 #if defined(_STLP_NO_MEMBER_TEMPLATE_KEYWORD) && defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
0096 #  define BOOST_NO_STD_ALLOCATOR
0097 #endif
0098 
0099 //
0100 // If STLport thinks there is no wchar_t at all, then we have to disable
0101 // the support for the relevant specilazations of std:: templates.
0102 //
0103 #if !defined(_STLP_HAS_WCHAR_T) && !defined(_STLP_WCHAR_T_IS_USHORT)
0104 #  ifndef  BOOST_NO_STD_WSTRING
0105 #     define BOOST_NO_STD_WSTRING
0106 #  endif
0107 #  ifndef  BOOST_NO_STD_WSTREAMBUF
0108 #     define BOOST_NO_STD_WSTREAMBUF
0109 #  endif
0110 #endif
0111 
0112 //
0113 // We always have SGI style hash_set, hash_map, and slist:
0114 //
0115 #ifndef _STLP_NO_EXTENSIONS
0116 #define BOOST_HAS_HASH
0117 #define BOOST_HAS_SLIST
0118 #endif
0119 
0120 //
0121 // STLport does a good job of importing names into namespace std::,
0122 // but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
0123 // workaround does not conflict with STLports:
0124 //
0125 //
0126 // Harold Howe says:
0127 // Borland switched to STLport in BCB6. Defining BOOST_NO_STDC_NAMESPACE with
0128 // BCB6 does cause problems. If we detect C++ Builder, then don't define 
0129 // BOOST_NO_STDC_NAMESPACE
0130 //
0131 #if !defined(BOOST_BORLANDC) && !defined(__DMC__)
0132 //
0133 // If STLport is using it's own namespace, and the real names are in
0134 // the global namespace, then we duplicate STLport's using declarations
0135 // (by defining BOOST_NO_STDC_NAMESPACE), we do this because STLport doesn't
0136 // necessarily import all the names we need into namespace std::
0137 // 
0138 #  if (defined(__STL_IMPORT_VENDOR_CSTD) \
0139          || defined(__STL_USE_OWN_NAMESPACE) \
0140          || defined(_STLP_IMPORT_VENDOR_CSTD) \
0141          || defined(_STLP_USE_OWN_NAMESPACE)) \
0142       && (defined(__STL_VENDOR_GLOBAL_CSTD) || defined (_STLP_VENDOR_GLOBAL_CSTD))
0143 #     define BOOST_NO_STDC_NAMESPACE
0144 #     define BOOST_NO_EXCEPTION_STD_NAMESPACE
0145 #  endif
0146 #elif defined(BOOST_BORLANDC) && BOOST_BORLANDC < 0x560
0147 // STLport doesn't import std::abs correctly:
0148 #include <stdlib.h>
0149 namespace std { using ::abs; }
0150 // and strcmp/strcpy don't get imported either ('cos they are macros)
0151 #include <string.h>
0152 #ifdef strcpy
0153 #  undef strcpy
0154 #endif
0155 #ifdef strcmp
0156 #  undef strcmp
0157 #endif
0158 #ifdef _STLP_VENDOR_CSTD
0159 namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; }
0160 #endif
0161 #endif
0162 
0163 //
0164 // std::use_facet may be non-standard, uses a class instead:
0165 //
0166 #if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
0167 #  define BOOST_NO_STD_USE_FACET
0168 #  define BOOST_HAS_STLP_USE_FACET
0169 #endif
0170 
0171 //
0172 // If STLport thinks there are no wide functions, <cwchar> etc. is not working; but
0173 // only if BOOST_NO_STDC_NAMESPACE is not defined (if it is then we do the import 
0174 // into std:: ourselves).
0175 //
0176 #if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined(BOOST_NO_STDC_NAMESPACE)
0177 #  define BOOST_NO_CWCHAR
0178 #  define BOOST_NO_CWCTYPE
0179 #endif
0180 
0181 //
0182 // If STLport for some reason was configured so that it thinks that wchar_t
0183 // is not an intrinsic type, then we have to disable the support for it as
0184 // well (we would be missing required specializations otherwise).
0185 //
0186 #if !defined( _STLP_HAS_WCHAR_T) || defined(_STLP_WCHAR_T_IS_USHORT)
0187 #  undef  BOOST_NO_INTRINSIC_WCHAR_T
0188 #  define BOOST_NO_INTRINSIC_WCHAR_T
0189 #endif
0190 
0191 //
0192 // Borland ships a version of STLport with C++ Builder 6 that lacks
0193 // hashtables and the like:
0194 //
0195 #if defined(BOOST_BORLANDC) && (BOOST_BORLANDC == 0x560)
0196 #  undef BOOST_HAS_HASH
0197 #endif
0198 
0199 //
0200 // gcc-2.95.3/STLPort does not like the using declarations we use to get ADL with std::min/max
0201 //
0202 #if defined(__GNUC__) && (__GNUC__ < 3)
0203 #  include <algorithm> // for std::min and std::max
0204 #  define BOOST_USING_STD_MIN() ((void)0)
0205 #  define BOOST_USING_STD_MAX() ((void)0)
0206 namespace boost { using std::min; using std::max; }
0207 #endif
0208 
0209 //  C++0x headers not yet implemented
0210 //
0211 #  define BOOST_NO_CXX11_HDR_ARRAY
0212 #  define BOOST_NO_CXX11_HDR_CHRONO
0213 #  define BOOST_NO_CXX11_HDR_CODECVT
0214 #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0215 #  define BOOST_NO_CXX11_HDR_FORWARD_LIST
0216 #  define BOOST_NO_CXX11_HDR_FUTURE
0217 #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
0218 #  define BOOST_NO_CXX11_HDR_MUTEX
0219 #  define BOOST_NO_CXX11_HDR_RANDOM
0220 #  define BOOST_NO_CXX11_HDR_RATIO
0221 #  define BOOST_NO_CXX11_HDR_REGEX
0222 #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
0223 #  define BOOST_NO_CXX11_HDR_THREAD
0224 #  define BOOST_NO_CXX11_HDR_TUPLE
0225 #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
0226 #  define BOOST_NO_CXX11_HDR_TYPEINDEX
0227 #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
0228 #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
0229 #  define BOOST_NO_CXX11_NUMERIC_LIMITS
0230 #  define BOOST_NO_CXX11_ALLOCATOR
0231 #  define BOOST_NO_CXX11_POINTER_TRAITS
0232 #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
0233 #  define BOOST_NO_CXX11_SMART_PTR
0234 #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
0235 #  define BOOST_NO_CXX11_HDR_ATOMIC
0236 #  define BOOST_NO_CXX11_STD_ALIGN
0237 #  define BOOST_NO_CXX11_ADDRESSOF
0238 #  define BOOST_NO_CXX11_HDR_EXCEPTION
0239 
0240 #if defined(__has_include)
0241 #if !__has_include(<shared_mutex>)
0242 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0243 #elif __cplusplus < 201402
0244 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0245 #endif
0246 #else
0247 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0248 #endif
0249 
0250 // C++14 features
0251 #  define BOOST_NO_CXX14_STD_EXCHANGE
0252 
0253 // C++17 features
0254 #  define BOOST_NO_CXX17_STD_APPLY
0255 #  define BOOST_NO_CXX17_STD_INVOKE
0256 #  define BOOST_NO_CXX17_ITERATOR_TRAITS
0257 
0258 #define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)