roguewave.hpp
Go to the documentation of this file.
00001 //  (C) Copyright John Maddock 2001 - 2003. 
00002 //  (C) Copyright Jens Maurer 2001. 
00003 //  (C) Copyright David Abrahams 2003. 
00004 //  (C) Copyright Boris Gubenko 2007. 
00005 //  Use, modification and distribution are subject to the 
00006 //  Boost Software License, Version 1.0. (See accompanying file 
00007 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
00008 
00009 //  See http://www.boost.org for most recent version.
00010 
00011 //  Rogue Wave std lib:
00012 
00013 #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
00014 #  include <boost/config/no_tr1/utility.hpp>
00015 #  if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
00016 #     error This is not the Rogue Wave standard library
00017 #  endif
00018 #endif
00019 //
00020 // figure out a consistent version number:
00021 //
00022 #ifndef _RWSTD_VER
00023 #  define BOOST_RWSTD_VER 0x010000
00024 #elif _RWSTD_VER < 0x010000
00025 #  define BOOST_RWSTD_VER (_RWSTD_VER << 8)
00026 #else
00027 #  define BOOST_RWSTD_VER _RWSTD_VER
00028 #endif
00029 
00030 #ifndef _RWSTD_VER
00031 #  define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
00032 #elif _RWSTD_VER < 0x04010200
00033  #  define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
00034 #else
00035 #  ifdef _RWSTD_VER_STR
00036 #    define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR
00037 #  else
00038 #    define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER)
00039 #  endif
00040 #endif
00041 
00042 //
00043 // Prior to version 2.2.0 the primary template for std::numeric_limits
00044 // does not have compile time constants, even though specializations of that
00045 // template do:
00046 //
00047 #if BOOST_RWSTD_VER < 0x020200
00048 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
00049 #endif
00050 
00051 // Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
00052 // library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
00053 #if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
00054 #  define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
00055 # endif
00056 
00057 //
00058 // Borland version of numeric_limits lacks __int64 specialisation:
00059 //
00060 #ifdef __BORLANDC__
00061 #  define BOOST_NO_MS_INT64_NUMERIC_LIMITS
00062 #endif
00063 
00064 //
00065 // No std::iterator if it can't figure out default template args:
00066 //
00067 #if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
00068 #  define BOOST_NO_STD_ITERATOR
00069 #endif
00070 
00071 //
00072 // No iterator traits without partial specialization:
00073 //
00074 #if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
00075 #  define BOOST_NO_STD_ITERATOR_TRAITS
00076 #endif
00077 
00078 //
00079 // Prior to version 2.0, std::auto_ptr was buggy, and there were no
00080 // new-style iostreams, and no conformant std::allocator:
00081 //
00082 #if (BOOST_RWSTD_VER < 0x020000)
00083 #  define BOOST_NO_AUTO_PTR
00084 #  define BOOST_NO_STRINGSTREAM
00085 #  define BOOST_NO_STD_ALLOCATOR
00086 #  define BOOST_NO_STD_LOCALE
00087 #endif
00088 
00089 //
00090 // No template iterator constructors without member template support:
00091 //
00092 #if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
00093 #  define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
00094 #endif
00095 
00096 //
00097 // RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
00098 // (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
00099 // on HP aCC systems even though the allocator is in fact broken):
00100 //
00101 #if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
00102 #  define BOOST_NO_STD_ALLOCATOR
00103 #endif
00104 
00105 //
00106 // If we have a std::locale, we still may not have std::use_facet:
00107 //
00108 #if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
00109 #  define BOOST_NO_STD_USE_FACET
00110 #  define BOOST_HAS_TWO_ARG_USE_FACET
00111 #endif
00112 
00113 //
00114 // There's no std::distance prior to version 2, or without
00115 // partial specialization support:
00116 //
00117 #if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
00118     #define BOOST_NO_STD_DISTANCE
00119 #endif
00120 
00121 //
00122 // Some versions of the rogue wave library don't have assignable
00123 // OutputIterators:
00124 //
00125 #if BOOST_RWSTD_VER < 0x020100
00126 #  define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
00127 #endif
00128 
00129 //
00130 // Disable BOOST_HAS_LONG_LONG when the library has no support for it.
00131 //
00132 #if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
00133 #  undef BOOST_HAS_LONG_LONG
00134 #endif
00135 
00136 //
00137 // check that on HP-UX, the proper RW library is used
00138 //
00139 #if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD)
00140 #  error "Boost requires Standard RW library. Please compile and link with -AA"
00141 #endif
00142 
00143 //
00144 // Define macros specific to RW V2.2 on HP-UX
00145 //
00146 #if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100)
00147 #  ifndef __HP_TC1_MAKE_PAIR
00148 #    define __HP_TC1_MAKE_PAIR
00149 #  endif
00150 #  ifndef _HP_INSTANTIATE_STD2_VL
00151 #    define _HP_INSTANTIATE_STD2_VL
00152 #  endif
00153 #endif
00154 
00155 //
00156 // We never have the new C++0x unordered containers:
00157 //
00158 #define BOOST_NO_STD_UNORDERED
00159 


appl
Author(s): petercai
autogenerated on Tue Jan 7 2014 11:02:29