roguewave.hpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. // (C) Copyright John Maddock 2001 - 2003.
  2. // (C) Copyright Jens Maurer 2001.
  3. // (C) Copyright David Abrahams 2003.
  4. // (C) Copyright Boris Gubenko 2007.
  5. // Use, modification and distribution are subject to the
  6. // Boost Software License, Version 1.0. (See accompanying file
  7. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  8. // See http://www.boost.org for most recent version.
  9. // Rogue Wave std lib:
  10. #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
  11. # include <boost/config/no_tr1/utility.hpp>
  12. # if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
  13. # error This is not the Rogue Wave standard library
  14. # endif
  15. #endif
  16. //
  17. // figure out a consistent version number:
  18. //
  19. #ifndef _RWSTD_VER
  20. # define BOOST_RWSTD_VER 0x010000
  21. #elif _RWSTD_VER < 0x010000
  22. # define BOOST_RWSTD_VER (_RWSTD_VER << 8)
  23. #else
  24. # define BOOST_RWSTD_VER _RWSTD_VER
  25. #endif
  26. #ifndef _RWSTD_VER
  27. # define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
  28. #elif _RWSTD_VER < 0x04010200
  29. # define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
  30. #else
  31. # ifdef _RWSTD_VER_STR
  32. # define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR
  33. # else
  34. # define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER)
  35. # endif
  36. #endif
  37. //
  38. // Prior to version 2.2.0 the primary template for std::numeric_limits
  39. // does not have compile time constants, even though specializations of that
  40. // template do:
  41. //
  42. #if BOOST_RWSTD_VER < 0x020200
  43. # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
  44. #endif
  45. // Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
  46. // library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
  47. #if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
  48. # define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
  49. # endif
  50. //
  51. // Borland version of numeric_limits lacks __int64 specialisation:
  52. //
  53. #ifdef __BORLANDC__
  54. # define BOOST_NO_MS_INT64_NUMERIC_LIMITS
  55. #endif
  56. //
  57. // No std::iterator if it can't figure out default template args:
  58. //
  59. #if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
  60. # define BOOST_NO_STD_ITERATOR
  61. #endif
  62. //
  63. // No iterator traits without partial specialization:
  64. //
  65. #if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
  66. # define BOOST_NO_STD_ITERATOR_TRAITS
  67. #endif
  68. //
  69. // Prior to version 2.0, std::auto_ptr was buggy, and there were no
  70. // new-style iostreams, and no conformant std::allocator:
  71. //
  72. #if (BOOST_RWSTD_VER < 0x020000)
  73. # define BOOST_NO_AUTO_PTR
  74. # define BOOST_NO_STRINGSTREAM
  75. # define BOOST_NO_STD_ALLOCATOR
  76. # define BOOST_NO_STD_LOCALE
  77. #endif
  78. //
  79. // No template iterator constructors without member template support:
  80. //
  81. #if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
  82. # define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
  83. #endif
  84. //
  85. // RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
  86. // (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
  87. // on HP aCC systems even though the allocator is in fact broken):
  88. //
  89. #if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
  90. # define BOOST_NO_STD_ALLOCATOR
  91. #endif
  92. //
  93. // If we have a std::locale, we still may not have std::use_facet:
  94. //
  95. #if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
  96. # define BOOST_NO_STD_USE_FACET
  97. # define BOOST_HAS_TWO_ARG_USE_FACET
  98. #endif
  99. //
  100. // There's no std::distance prior to version 2, or without
  101. // partial specialization support:
  102. //
  103. #if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
  104. #define BOOST_NO_STD_DISTANCE
  105. #endif
  106. //
  107. // Some versions of the rogue wave library don't have assignable
  108. // OutputIterators:
  109. //
  110. #if BOOST_RWSTD_VER < 0x020100
  111. # define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
  112. #endif
  113. //
  114. // Disable BOOST_HAS_LONG_LONG when the library has no support for it.
  115. //
  116. #if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
  117. # undef BOOST_HAS_LONG_LONG
  118. #endif
  119. //
  120. // check that on HP-UX, the proper RW library is used
  121. //
  122. #if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD)
  123. # error "Boost requires Standard RW library. Please compile and link with -AA"
  124. #endif
  125. //
  126. // Define macros specific to RW V2.2 on HP-UX
  127. //
  128. #if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100)
  129. # ifndef __HP_TC1_MAKE_PAIR
  130. # define __HP_TC1_MAKE_PAIR
  131. # endif
  132. # ifndef _HP_INSTANTIATE_STD2_VL
  133. # define _HP_INSTANTIATE_STD2_VL
  134. # endif
  135. #endif
  136. // C++0x headers not yet implemented
  137. //
  138. # define BOOST_NO_0X_HDR_ARRAY
  139. # define BOOST_NO_0X_HDR_CHRONO
  140. # define BOOST_NO_0X_HDR_CODECVT
  141. # define BOOST_NO_0X_HDR_CONCEPTS
  142. # define BOOST_NO_0X_HDR_CONDITION_VARIABLE
  143. # define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
  144. # define BOOST_NO_0X_HDR_FORWARD_LIST
  145. # define BOOST_NO_0X_HDR_FUTURE
  146. # define BOOST_NO_0X_HDR_INITIALIZER_LIST
  147. # define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
  148. # define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
  149. # define BOOST_NO_0X_HDR_MUTEX
  150. # define BOOST_NO_0X_HDR_RANDOM
  151. # define BOOST_NO_0X_HDR_RATIO
  152. # define BOOST_NO_0X_HDR_REGEX
  153. # define BOOST_NO_0X_HDR_SYSTEM_ERROR
  154. # define BOOST_NO_0X_HDR_THREAD
  155. # define BOOST_NO_0X_HDR_TUPLE
  156. # define BOOST_NO_0X_HDR_TYPE_TRAITS
  157. # define BOOST_NO_STD_UNORDERED // deprecated; see following
  158. # define BOOST_NO_0X_HDR_UNORDERED_MAP
  159. # define BOOST_NO_0X_HDR_UNORDERED_SET