os/ossrv/ossrv_pub/boost_apis/boost/config/stdlib/roguewave.hpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
//  (C) Copyright John Maddock 2001 - 2003. 
sl@0
     2
//  (C) Copyright Jens Maurer 2001. 
sl@0
     3
//  (C) Copyright David Abrahams 2003. 
sl@0
     4
//  Use, modification and distribution are subject to the 
sl@0
     5
//  Boost Software License, Version 1.0. (See accompanying file 
sl@0
     6
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
sl@0
     7
sl@0
     8
//  See http://www.boost.org for most recent version.
sl@0
     9
sl@0
    10
//  Rogue Wave std lib:
sl@0
    11
sl@0
    12
#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
sl@0
    13
#  include <boost/config/no_tr1/utility.hpp>
sl@0
    14
#  if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
sl@0
    15
#     error This is not the Rogue Wave standard library
sl@0
    16
#  endif
sl@0
    17
#endif
sl@0
    18
//
sl@0
    19
// figure out a consistent version number:
sl@0
    20
//
sl@0
    21
#ifndef _RWSTD_VER
sl@0
    22
#  define BOOST_RWSTD_VER 0x010000
sl@0
    23
#elif _RWSTD_VER < 0x010000
sl@0
    24
#  define BOOST_RWSTD_VER (_RWSTD_VER << 8)
sl@0
    25
#else
sl@0
    26
#  define BOOST_RWSTD_VER _RWSTD_VER
sl@0
    27
#endif
sl@0
    28
sl@0
    29
#ifndef _RWSTD_VER
sl@0
    30
#  define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
sl@0
    31
#else
sl@0
    32
#  define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
sl@0
    33
#endif
sl@0
    34
sl@0
    35
//
sl@0
    36
// Prior to version 2.2.0 the primary template for std::numeric_limits
sl@0
    37
// does not have compile time constants, even though specializations of that
sl@0
    38
// template do:
sl@0
    39
//
sl@0
    40
#if BOOST_RWSTD_VER < 0x020200
sl@0
    41
#  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
sl@0
    42
#endif
sl@0
    43
sl@0
    44
// Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
sl@0
    45
// library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
sl@0
    46
#if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
sl@0
    47
#  define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
sl@0
    48
# endif
sl@0
    49
sl@0
    50
//
sl@0
    51
// Borland version of numeric_limits lacks __int64 specialisation:
sl@0
    52
//
sl@0
    53
#ifdef __BORLANDC__
sl@0
    54
#  define BOOST_NO_MS_INT64_NUMERIC_LIMITS
sl@0
    55
#endif
sl@0
    56
sl@0
    57
//
sl@0
    58
// No std::iterator if it can't figure out default template args:
sl@0
    59
//
sl@0
    60
#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
sl@0
    61
#  define BOOST_NO_STD_ITERATOR
sl@0
    62
#endif
sl@0
    63
sl@0
    64
//
sl@0
    65
// No iterator traits without partial specialization:
sl@0
    66
//
sl@0
    67
#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
sl@0
    68
#  define BOOST_NO_STD_ITERATOR_TRAITS
sl@0
    69
#endif
sl@0
    70
sl@0
    71
//
sl@0
    72
// Prior to version 2.0, std::auto_ptr was buggy, and there were no
sl@0
    73
// new-style iostreams, and no conformant std::allocator:
sl@0
    74
//
sl@0
    75
#if (BOOST_RWSTD_VER < 0x020000)
sl@0
    76
#  define BOOST_NO_AUTO_PTR
sl@0
    77
#  define BOOST_NO_STRINGSTREAM
sl@0
    78
#  define BOOST_NO_STD_ALLOCATOR
sl@0
    79
#  define BOOST_NO_STD_LOCALE
sl@0
    80
#endif
sl@0
    81
sl@0
    82
//
sl@0
    83
// No template iterator constructors without member template support:
sl@0
    84
//
sl@0
    85
#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
sl@0
    86
#  define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
sl@0
    87
#endif
sl@0
    88
sl@0
    89
//
sl@0
    90
// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
sl@0
    91
// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
sl@0
    92
// on HP aCC systems even though the allocator is in fact broken):
sl@0
    93
//
sl@0
    94
#if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
sl@0
    95
#  define BOOST_NO_STD_ALLOCATOR
sl@0
    96
#endif
sl@0
    97
sl@0
    98
//
sl@0
    99
// If we have a std::locale, we still may not have std::use_facet:
sl@0
   100
//
sl@0
   101
#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
sl@0
   102
#  define BOOST_NO_STD_USE_FACET
sl@0
   103
#  define BOOST_HAS_TWO_ARG_USE_FACET
sl@0
   104
#endif
sl@0
   105
sl@0
   106
//
sl@0
   107
// There's no std::distance prior to version 2, or without
sl@0
   108
// partial specialization support:
sl@0
   109
//
sl@0
   110
#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
sl@0
   111
    #define BOOST_NO_STD_DISTANCE
sl@0
   112
#endif
sl@0
   113
sl@0
   114
//
sl@0
   115
// Some versions of the rogue wave library don't have assignable
sl@0
   116
// OutputIterators:
sl@0
   117
//
sl@0
   118
#if BOOST_RWSTD_VER < 0x020100
sl@0
   119
#  define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
sl@0
   120
#endif
sl@0
   121
sl@0
   122
//
sl@0
   123
// Disable BOOST_HAS_LONG_LONG when the library has no support for it.
sl@0
   124
//
sl@0
   125
#if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
sl@0
   126
#  undef BOOST_HAS_LONG_LONG
sl@0
   127
#endif