os/ossrv/ossrv_pub/boost_apis/boost/tr1/detail/config.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 2005.
sl@0
     2
//  Use, modification and distribution are subject to the
sl@0
     3
//  Boost Software License, Version 1.0. (See accompanying file
sl@0
     4
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
sl@0
     5
sl@0
     6
sl@0
     7
#ifndef BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
sl@0
     8
#  define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
sl@0
     9
sl@0
    10
//
sl@0
    11
// IMPORTANT: we must figure out the basics, such as how to
sl@0
    12
// forward to the real std lib headers *without* including
sl@0
    13
// boost/config.hpp or any of the std lib headers.  A classic 
sl@0
    14
// chicken and the egg problem....
sl@0
    15
//
sl@0
    16
// Including <cstddef> at least lets us detect STLport:
sl@0
    17
//
sl@0
    18
#include <cstddef>
sl@0
    19
sl@0
    20
#  if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && !defined(__BORLANDC__)
sl@0
    21
#     ifdef __SUNPRO_CC
sl@0
    22
         // can't use <../stlport/name> since some compilers put stlport in a different directory:
sl@0
    23
#        define BOOST_TR1_STD_HEADER(name) <../stlport4/name>
sl@0
    24
#     else
sl@0
    25
#        define BOOST_TR1_STD_HEADER(name) <../stlport/name>
sl@0
    26
#     endif
sl@0
    27
#  elif defined(__HP_aCC)
sl@0
    28
#     define BOOST_TR1_STD_HEADER(name) <../include_std/name>
sl@0
    29
#  elif defined(__DECCXX)
sl@0
    30
#     define BOOST_TR1_STD_HEADER(name) <../cxx/name>
sl@0
    31
#  elif defined(__BORLANDC__) && __BORLANDC__ >= 0x570
sl@0
    32
#     define BOOST_TR1_STD_HEADER(name) <../include/dinkumware/name>
sl@0
    33
#  else
sl@0
    34
#     define BOOST_TR1_STD_HEADER(name) <../include/name>
sl@0
    35
#  endif
sl@0
    36
sl@0
    37
#if defined(__GNUC__) && !defined(BOOST_HAS_INCLUDE_NEXT)
sl@0
    38
#  define BOOST_HAS_INCLUDE_NEXT
sl@0
    39
#endif
sl@0
    40
sl@0
    41
// Can't use BOOST_WORKAROUND here, it leads to recursive includes:
sl@0
    42
#if (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || (defined(_MSC_VER) && (_MSC_VER < 1310))
sl@0
    43
#  define BOOST_TR1_USE_OLD_TUPLE
sl@0
    44
#endif
sl@0
    45
sl@0
    46
//
sl@0
    47
// We may be in the middle of parsing boost/config.hpp
sl@0
    48
// when this header is included, so don't rely on config
sl@0
    49
// stuff in the rest of this header...
sl@0
    50
//
sl@0
    51
// Find our actual std lib:
sl@0
    52
//
sl@0
    53
#ifdef BOOST_HAS_INCLUDE_NEXT
sl@0
    54
#  ifndef BOOST_TR1_NO_RECURSION
sl@0
    55
#     define BOOST_TR1_NO_RECURSION
sl@0
    56
#     define BOOST_TR1_NO_CONFIG_RECURSION
sl@0
    57
#  endif
sl@0
    58
#  include_next <utility>
sl@0
    59
#  if (__GNUC__ < 3)
sl@0
    60
#     include_next <algorithm>
sl@0
    61
#     include_next <iterator>
sl@0
    62
#  endif
sl@0
    63
#  ifdef BOOST_TR1_NO_CONFIG_RECURSION
sl@0
    64
#     undef BOOST_TR1_NO_CONFIG_RECURSION
sl@0
    65
#     undef BOOST_TR1_NO_RECURSION
sl@0
    66
#  endif
sl@0
    67
#else
sl@0
    68
#  include BOOST_TR1_STD_HEADER(utility)
sl@0
    69
#endif
sl@0
    70
sl@0
    71
#if defined(__GLIBCXX__) && !defined(BOOST_TR1_PATH)
sl@0
    72
#  define BOOST_TR1_PATH(name) tr1/name
sl@0
    73
#endif
sl@0
    74
#if !defined(BOOST_TR1_PATH)
sl@0
    75
#  define BOOST_TR1_PATH(name) name
sl@0
    76
#endif
sl@0
    77
sl@0
    78
#define BOOST_TR1_HEADER(name) <BOOST_TR1_PATH(name)>
sl@0
    79
sl@0
    80
#ifdef BOOST_HAS_TR1
sl@0
    81
   // turn on support for everything:
sl@0
    82
#  define BOOST_HAS_TR1_ARRAY
sl@0
    83
#  define BOOST_HAS_TR1_COMPLEX_OVERLOADS
sl@0
    84
#  define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
sl@0
    85
#  define BOOST_HAS_TR1_REFERENCE_WRAPPER
sl@0
    86
#  define BOOST_HAS_TR1_RESULT_OF
sl@0
    87
#  define BOOST_HAS_TR1_MEM_FN
sl@0
    88
#  define BOOST_HAS_TR1_BIND
sl@0
    89
#  define BOOST_HAS_TR1_FUNCTION
sl@0
    90
#  define BOOST_HAS_TR1_HASH
sl@0
    91
#  define BOOST_HAS_TR1_SHARED_PTR
sl@0
    92
#  define BOOST_HAS_TR1_RANDOM
sl@0
    93
#  define BOOST_HAS_TR1_REGEX
sl@0
    94
#  define BOOST_HAS_TR1_TUPLE
sl@0
    95
#  define BOOST_HAS_TR1_TYPE_TRAITS
sl@0
    96
#  define BOOST_HAS_TR1_UTILITY
sl@0
    97
#  define BOOST_HAS_TR1_UNORDERED_MAP
sl@0
    98
#  define BOOST_HAS_TR1_UNORDERED_SET
sl@0
    99
sl@0
   100
#endif
sl@0
   101
sl@0
   102
#if defined(__MWERKS__) && (__MWERKS__ >= 0x3205)
sl@0
   103
//
sl@0
   104
// Very preliminary MWCW support, may not be right:
sl@0
   105
//
sl@0
   106
#  define BOOST_HAS_TR1_SHARED_PTR
sl@0
   107
#  define BOOST_HAS_TR1_REFERENCE_WRAPPER
sl@0
   108
#  define BOOST_HAS_TR1_FUNCTION
sl@0
   109
#  define BOOST_HAS_TR1_TUPLE
sl@0
   110
#  define BOOST_HAS_TR1_RESULT_OF
sl@0
   111
#endif
sl@0
   112
sl@0
   113
#ifdef BOOST_HAS_GCC_TR1
sl@0
   114
   // turn on support for everything in gcc 4.0.x:
sl@0
   115
#  define BOOST_HAS_TR1_ARRAY
sl@0
   116
//#  define BOOST_HAS_TR1_COMPLEX_OVERLOADS
sl@0
   117
//#  define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
sl@0
   118
#  define BOOST_HAS_TR1_REFERENCE_WRAPPER
sl@0
   119
#  define BOOST_HAS_TR1_RESULT_OF
sl@0
   120
#  define BOOST_HAS_TR1_MEM_FN
sl@0
   121
#  define BOOST_HAS_TR1_BIND
sl@0
   122
#  define BOOST_HAS_TR1_FUNCTION
sl@0
   123
#  define BOOST_HAS_TR1_HASH
sl@0
   124
#  define BOOST_HAS_TR1_SHARED_PTR
sl@0
   125
//#  define BOOST_HAS_TR1_RANDOM
sl@0
   126
//#  define BOOST_HAS_TR1_REGEX
sl@0
   127
#  define BOOST_HAS_TR1_TUPLE
sl@0
   128
#  define BOOST_HAS_TR1_TYPE_TRAITS
sl@0
   129
#  define BOOST_HAS_TR1_UTILITY
sl@0
   130
#  define BOOST_HAS_TR1_UNORDERED_MAP
sl@0
   131
#  define BOOST_HAS_TR1_UNORDERED_SET
sl@0
   132
sl@0
   133
#endif
sl@0
   134
sl@0
   135
#include <boost/config.hpp>
sl@0
   136
sl@0
   137
#endif
sl@0
   138