]> git.lyx.org Git - lyx.git/blob - boost/boost/config/stdlib/roguewave.hpp
boost 1.30.2
[lyx.git] / boost / boost / config / stdlib / roguewave.hpp
1 //  (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and
2 //  distribute this software is granted provided this copyright notice appears
3 //  in all copies. This software is provided "as is" without express or implied
4 //  warranty, and with no claim as to its suitability for any purpose.
5
6 //  See http://www.boost.org for most recent version.
7
8 //  Rogue Wave std lib:
9
10 #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
11 #  include <utility>
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
27 #ifndef _RWSTD_VER
28 #  define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
29 #else
30 #  define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
31 #endif
32
33 //
34 // Prior to version 2.2.0 the primary template for std::numeric_limits
35 // does not have compile time constants, even though specializations of that
36 // template do:
37 //
38 #if BOOST_RWSTD_VER < 0x020200
39 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
40 #endif
41
42 #if BOOST_RWSTD_VER <= 0x020101
43 #  define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
44 # endif
45
46 //
47 // Borland version of numeric_limits lacks __int64 specialisation:
48 //
49 #ifdef __BORLANDC__
50 #  define BOOST_NO_MS_INT64_NUMERIC_LIMITS
51 #endif
52
53 //
54 // No std::iterator if it can't figure out default template args:
55 //
56 #if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
57 #  define BOOST_NO_STD_ITERATOR
58 #endif
59
60 //
61 // No iterator traits without partial specialization:
62 //
63 #if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
64 #  define BOOST_NO_STD_ITERATOR_TRAITS
65 #endif
66
67 //
68 // Prior to version 2.0, std::auto_ptr was buggy, and there were no
69 // new-style iostreams, and no conformant std::allocator:
70 //
71 #if (BOOST_RWSTD_VER < 0x020000)
72 #  define BOOST_NO_AUTO_PTR
73 #  define BOOST_NO_STRINGSTREAM
74 #  define BOOST_NO_STD_ALLOCATOR
75 #  define BOOST_NO_STD_LOCALE
76 #endif
77
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 //
86 // RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
87 // (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
88 // on HP aCC systems even though the allocator is in fact broken):
89 //
90 #if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
91 #  define BOOST_NO_STD_ALLOCATOR
92 #endif
93
94 //
95 // If we have a std::locale, we still may not have std::use_facet:
96 //
97 #if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
98 #  define BOOST_NO_STD_USE_FACET
99 #  define BOOST_HAS_TWO_ARG_USE_FACET
100 #endif
101
102 //
103 // There's no std::distance prior to version 2, or without
104 // partial specialization support:
105 //
106 #if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
107     #define BOOST_NO_STD_DISTANCE
108 #endif
109
110 //
111 // Some versions of the rogue wave library don't have assignable
112 // OutputIterators:
113 //
114 #if BOOST_RWSTD_VER < 0x020100
115 #  define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
116 #endif
117
118