Whole document tree
    

Whole document tree

stl_config.h Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

stl_config.h

Go to the documentation of this file.
00001 /*
00002  *
00003  * Copyright (c) 1994
00004  * Hewlett-Packard Company
00005  *
00006  * Permission to use, copy, modify, distribute and sell this software
00007  * and its documentation for any purpose is hereby granted without fee,
00008  * provided that the above copyright notice appear in all copies and
00009  * that both that copyright notice and this permission notice appear
00010  * in supporting documentation.  Hewlett-Packard Company makes no
00011  * representations about the suitability of this software for any
00012  * purpose.  It is provided "as is" without express or implied warranty.
00013  *
00014  * Copyright (c) 1997
00015  * Silicon Graphics
00016  *
00017  * Permission to use, copy, modify, distribute and sell this software
00018  * and its documentation for any purpose is hereby granted without fee,
00019  * provided that the above copyright notice appear in all copies and
00020  * that both that copyright notice and this permission notice appear
00021  * in supporting documentation.  Silicon Graphics makes no
00022  * representations about the suitability of this software for any
00023  * purpose.  It is provided "as is" without express or implied warranty.
00024  *
00025  */
00026 
00027 #ifndef __STL_CONFIG_H
00028 # define __STL_CONFIG_H
00029 
00030 // Flags:
00031 // * __STL_NO_BOOL: defined if the compiler doesn't have bool as a builtin
00032 //   type.
00033 // * __STL_HAS_WCHAR_T: defined if the compier has wchar_t as a builtin type.
00034 // * __STL_NO_DRAND48: defined if the compiler doesn't have the drand48 
00035 //   function.
00036 // * __STL_STATIC_TEMPLATE_MEMBER_BUG: defined if the compiler can't handle
00037 //   static members of template classes.
00038 // * __STL_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
00039 //   constant-initializer in the declaration of a static const data member
00040 //   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
00041 // * __STL_CLASS_PARTIAL_SPECIALIZATION: defined if the compiler supports
00042 //   partial specialization of template classes.
00043 // * __STL_PARTIAL_SPECIALIZATION_SYNTAX: defined if the compiler 
00044 //   supports partial specialization syntax for full specialization of
00045 //   class templates.  (Even if it doesn't actually support partial 
00046 //   specialization itself.)
00047 // * __STL_FUNCTION_TMPL_PARTIAL_ORDER: defined if the compiler supports
00048 //   partial ordering of function templates.  (a.k.a partial specialization
00049 //   of function templates.)
00050 // * __STL_MEMBER_TEMPLATES: defined if the compiler supports template
00051 //   member functions of classes.
00052 // * __STL_MEMBER_TEMPLATE_CLASSES: defined if the compiler supports 
00053 //   nested classes that are member templates of other classes.
00054 // * __STL_TEMPLATE_FRIENDS: defined if the compiler supports templatized
00055 //   friend declarations.
00056 // * __STL_EXPLICIT_FUNCTION_TMPL_ARGS: defined if the compiler 
00057 //   supports calling a function template by providing its template
00058 //   arguments explicitly.
00059 // * __STL_LIMITED_DEFAULT_TEMPLATES: defined if the compiler is unable
00060 //   to handle default template parameters that depend on previous template
00061 //   parameters.
00062 // * __STL_NON_TYPE_TMPL_PARAM_BUG: defined if the compiler has trouble with
00063 //   function template argument deduction for non-type template parameters.
00064 // * __SGI_STL_NO_ARROW_OPERATOR: defined if the compiler is unable
00065 //   to support the -> operator for iterators.
00066 // * __STL_DEFAULT_CONSTRUCTOR_BUG: defined if T() does not work properly
00067 //   when T is a builtin type.
00068 // * __STL_USE_EXCEPTIONS: defined if the compiler (in the current compilation
00069 //   mode) supports exceptions.
00070 // * __STL_USE_NAMESPACES: defined if the compiler has the necessary
00071 //   support for namespaces.
00072 // * __STL_NO_EXCEPTION_HEADER: defined if the compiler does not have a
00073 //   standard-conforming header <exception>.
00074 // * __STL_NO_BAD_ALLOC: defined if the compiler does not have a <new>
00075 //   header, or if <new> does not contain a bad_alloc class.  If a bad_alloc
00076 //   class exists, it is assumed to be in namespace std.
00077 // * __STL_SGI_THREADS: defined if this is being compiled for an SGI IRIX
00078 //   system in multithreaded mode, using native SGI threads instead of 
00079 //   pthreads.
00080 // * __STL_WIN32THREADS: defined if this is being compiled on a WIN32
00081 //   compiler in multithreaded mode.
00082 // * __STL_PTHREADS: defined if we should use portable pthreads
00083 //   synchronization.
00084 // * __STL_UITHREADS: defined if we should use UI / solaris / UnixWare threads
00085 //   synchronization.  UIthreads are similar to pthreads, but are based 
00086 //   on an earlier version of the Posix threads standard.
00087 // * __STL_LONG_LONG if the compiler has long long and unsigned long long
00088 //   types.  (They're not in the C++ standard, but they are included
00089 //   in the C99 standard.)
00090 // * __STL_THREADS is defined if thread safety is needed.
00091 // * __STL_VOLATILE is defined to be "volatile" if threads are being
00092 //   used, and the empty string otherwise.
00093 // * __STL_USE_CONCEPT_CHECKS enables some extra compile-time error
00094 //   checking to make sure that user-defined template arguments satisfy
00095 //   all of the appropriate requirements.  This may result in more
00096 //   comprehensible error messages.  It incurs no runtime overhead.  This 
00097 //   feature requires member templates and partial specialization.
00098 // * __STL_NO_USING_CLAUSE_IN_CLASS: The compiler does not handle "using"
00099 //   clauses inside of class definitions.
00100 // * __STL_NO_FRIEND_TEMPLATE_CLASS: The compiler does not handle friend
00101 //   declaractions where the friend is a template class.
00102 // * __STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE: The compiler does not
00103 //   support the use of a function pointer type as the argument
00104 //   for a template.
00105 // * __STL_MEMBER_TEMPLATE_KEYWORD: standard C++ requires the template
00106 //   keyword in a few new places (14.2.4).  This flag is set for
00107 //   compilers that support (and require) this usage.
00108 
00109 
00110 // User-settable macros that control compilation:
00111 // * __STL_USE_SGI_ALLOCATORS: if defined, then the STL will use older
00112 //   SGI-style allocators, instead of standard-conforming allocators,
00113 //   even if the compiler supports all of the language features needed
00114 //   for standard-conforming allocators.
00115 // * __STL_NO_NAMESPACES: if defined, don't put the library in namespace
00116 //   std, even if the compiler supports namespaces.
00117 // * __STL_NO_RELOPS_NAMESPACE: if defined, don't put the relational
00118 //   operator templates (>, <=. >=, !=) in namespace std::rel_ops, even
00119 //   if the compiler supports namespaces and partial ordering of
00120 //   function templates.
00121 // * __STL_ASSERTIONS: if defined, then enable runtime checking through the
00122 //   __stl_assert macro.
00123 // * _PTHREADS: if defined, use Posix threads for multithreading support.
00124 // * _UITHREADS:if defined, use SCO/Solaris/UI threads for multithreading 
00125 //   support
00126 // * _NOTHREADS: if defined, don't use any multithreading support.  
00127 // * _STL_NO_CONCEPT_CHECKS: if defined, disables the error checking that
00128 //   we get from __STL_USE_CONCEPT_CHECKS.
00129 // * __STL_USE_NEW_IOSTREAMS: if defined, then the STL will use new,
00130 //   standard-conforming iostreams (e.g. the <iosfwd> header).  If not
00131 //   defined, the STL will use old cfront-style iostreams (e.g. the
00132 //   <iostream.h> header).
00133 
00134 // Other macros defined by this file:
00135 
00136 // * bool, true, and false, if __STL_NO_BOOL is defined.
00137 // * typename, as a null macro if it's not already a keyword.
00138 // * explicit, as a null macro if it's not already a keyword.
00139 // * namespace-related macros (__STD, __STL_BEGIN_NAMESPACE, etc.)
00140 // * exception-related macros (__STL_TRY, __STL_UNWIND, etc.)
00141 // * __stl_assert, either as a test or as a null macro, depending on
00142 //   whether or not __STL_ASSERTIONS is defined.
00143 
00144 # if defined(_PTHREADS) && !defined(_NOTHREADS)
00145 #     define __STL_PTHREADS
00146 # endif
00147 
00148 # if defined(_UITHREADS) && !defined(_PTHREADS) && !defined(_NOTHREADS)
00149 #     define __STL_UITHREADS
00150 # endif
00151 
00152 # if defined(__sgi) && !defined(__GNUC__)
00153 #   include <standards.h>
00154 #   if !defined(_BOOL)
00155 #     define __STL_NO_BOOL
00156 #   endif
00157 #   if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32
00158 #     define __STL_STATIC_CONST_INIT_BUG
00159 #   endif
00160 #   if defined(_WCHAR_T_IS_KEYWORD)
00161 #     define __STL_HAS_WCHAR_T 
00162 #   endif
00163 #   if !defined(_TYPENAME_IS_KEYWORD)
00164 #     define __STL_NEED_TYPENAME
00165 #   endif
00166 #   ifdef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES
00167 #     define __STL_CLASS_PARTIAL_SPECIALIZATION
00168 #   endif
00169 #   if (_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32
00170 #     define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00171 #   endif
00172 #   ifdef _MEMBER_TEMPLATES
00173 #     define __STL_MEMBER_TEMPLATES
00174 #     define __STL_TEMPLATE_FRIENDS
00175 #     define __STL_MEMBER_TEMPLATE_CLASSES
00176 #   endif
00177 #   if defined(_MEMBER_TEMPLATE_KEYWORD)
00178 #     define __STL_MEMBER_TEMPLATE_KEYWORD
00179 #   endif
00180 #   if defined(_STANDARD_C_PLUS_PLUS)
00181 #     define __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00182 #   endif
00183 #   if (_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32
00184 #     define __STL_MEMBER_TEMPLATE_KEYWORD
00185 #   endif
00186 #   if COMPILER_VERSION < 720 || (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32)
00187 #     define __STL_DEFAULT_CONSTRUCTOR_BUG
00188 #   endif
00189 #   if !defined(_EXPLICIT_IS_KEYWORD)
00190 #     define __STL_NEED_EXPLICIT
00191 #   endif
00192 #   ifdef __EXCEPTIONS
00193 #     define __STL_USE_EXCEPTIONS
00194 #   endif
00195 #   if (_COMPILER_VERSION >= 721) && defined(_NAMESPACES)
00196 #     define __STL_HAS_NAMESPACES
00197 #   endif 
00198 #   if (_COMPILER_VERSION < 721) || \
00199     !defined(__STL_HAS_NAMESPACES) || defined(__STL_NO_NAMESPACES)
00200 #     define __STL_NO_EXCEPTION_HEADER
00201 #   endif
00202 #   if _COMPILER_VERSION < 730 || !defined(_STANDARD_C_PLUS_PLUS) || \
00203       !defined(_NAMESPACES)
00204 #     define __STL_NO_BAD_ALLOC
00205 #   endif
00206 #   if !defined(_NOTHREADS) && !defined(__STL_PTHREADS)
00207 #     define __STL_SGI_THREADS
00208 #   endif
00209 #   if defined(_LONGLONG) && defined(_SGIAPI) && _SGIAPI
00210 #     define __STL_LONG_LONG
00211 #   endif
00212 #   if _COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)
00213 #     define __STL_USE_NEW_IOSTREAMS
00214 #   endif
00215 #   if _COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)
00216 #     define __STL_CAN_THROW_RANGE_ERRORS
00217 #   endif
00218 #   if _COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)
00219 #     define __SGI_STL_USE_AUTO_PTR_CONVERSIONS
00220 #   endif
00221 # endif
00222 
00223 
00224 /*
00225  * Jochen Schlick '1999  - added new #defines (__STL)_UITHREADS (for 
00226  *                         providing SCO / Solaris / UI thread support)
00227  *                       - added the necessary defines for the SCO UDK 7 
00228  *                         compiler (and its template friend behavior)
00229  *                       - all UDK7 specific STL changes are based on the 
00230  *                         macro __USLC__ being defined
00231  */
00232 // SCO UDK 7 compiler (UnixWare 7x, OSR 5, UnixWare 2x)
00233 # if defined(__USLC__)
00234 #     define __STL_HAS_WCHAR_T 
00235 #     define __STL_CLASS_PARTIAL_SPECIALIZATION
00236 #     define __STL_PARTIAL_SPECIALIZATION_SYNTAX
00237 #     define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00238 #     define __STL_MEMBER_TEMPLATES
00239 #     define __STL_MEMBER_TEMPLATE_CLASSES
00240 #     define __STL_USE_EXCEPTIONS
00241 #     define __STL_HAS_NAMESPACES
00242 #     define __STL_USE_NAMESPACES
00243 #     define __STL_LONG_LONG
00244 #     if defined(_REENTRANT)
00245 #           define _UITHREADS     /* if      UnixWare < 7.0.1 */
00246 #           define __STL_UITHREADS
00247 //   use the following defines instead of the UI threads defines when
00248 //   you want to use POSIX threads
00249 //#         define _PTHREADS      /* only if UnixWare >=7.0.1 */
00250 //#         define __STL_PTHREADS
00251 #     endif
00252 # endif
00253 
00254 
00255 
00256 # ifdef __GNUC__
00257 #   define __STL_HAS_WCHAR_T
00258 #   define __STL_MEMBER_TEMPLATES
00259 #   define __STL_MEMBER_TEMPLATE_CLASSES
00260 #   define __STL_TEMPLATE_FRIENDS
00261 #   define __STL_CLASS_PARTIAL_SPECIALIZATION 
00262 #   define __STL_PARTIAL_SPECIALIZATION_SYNTAX 
00263 #   define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00264 #   define __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00265 #   define __SGI_STL_USE_AUTO_PTR_CONVERSIONS
00266 #   define __STL_HAS_NAMESPACES
00267 #   define __STL_USE_NAMESPACES
00268 #   ifdef __EXCEPTIONS
00269 #     define __STL_USE_EXCEPTIONS
00270 #   endif
00271 #   define __STL_THROW_RANGE_ERRORS 
00272 #   define __STL_CAN_THROW_RANGE_ERRORS 
00273 #   define __STL_USE_STD_ALLOCATORS 
00274 #   define __USE_MALLOC // As the "underlying allocator"
00275 //#     define __STL_USE_NEW_IOSTREAMS //990209 bkoz--use standard .h includes.
00276 #   ifdef _REENTRANT
00277 #     define __STL_THREADS
00278 #   endif
00279 #   ifdef _PTHREADS
00280 #     define __STL_PTHREADS
00281 #   endif
00282 #   ifndef __STRICT_ANSI__
00283 #     define __STL_LONG_LONG
00284 #   endif
00285 #   if (__GNUC__ < 2) || (__GNUC__ == 2 && __GNUC_MINOR__ < 95)
00286 #     define __STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE
00287 #   endif
00288 # endif
00289 
00290 # if defined(__SUNPRO_CC) 
00291 #   define __STL_NO_BOOL
00292 #   define __STL_NEED_TYPENAME
00293 #   define __STL_NEED_EXPLICIT
00294 #   define __STL_USE_EXCEPTIONS
00295 #   ifdef _REENTRANT
00296 #     define __STL_PTHREADS
00297 #   endif
00298 #   define __SGI_STL_NO_ARROW_OPERATOR
00299 #   define __STL_PARTIAL_SPECIALIZATION_SYNTAX
00300 #   define __STL_NO_EXCEPTION_HEADER
00301 #   define __STL_NO_BAD_ALLOC
00302 # endif
00303 
00304 # if defined(__COMO__)
00305 #   define __STL_MEMBER_TEMPLATES
00306 #   define __STL_MEMBER_TEMPLATE_CLASSES
00307 #   define __STL_TEMPLATE_FRIENDS
00308 #   define __STL_CLASS_PARTIAL_SPECIALIZATION
00309 #   define __STL_USE_EXCEPTIONS
00310 #   define __STL_HAS_NAMESPACES
00311 # endif
00312 
00313 // Intel compiler, which uses the EDG front end.
00314 # if defined(__ICL)
00315 #   define __STL_LONG_LONG 
00316 #   define __STL_MEMBER_TEMPLATES
00317 #   define __STL_MEMBER_TEMPLATE_CLASSES
00318 #   define __STL_TEMPLATE_FRIENDS
00319 #   define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00320 #   define __STL_CLASS_PARTIAL_SPECIALIZATION
00321 #   define __STL_NO_DRAND48
00322 #   define __STL_HAS_NAMESPACES
00323 #   define __STL_USE_EXCEPTIONS
00324 #   define __STL_MEMBER_TEMPLATE_KEYWORD
00325 #   ifdef _CPPUNWIND
00326 #     define __STL_USE_EXCEPTIONS
00327 #   endif
00328 #   ifdef _MT
00329 #     define __STL_WIN32THREADS
00330 #   endif
00331 # endif
00332 
00333 // Mingw32, GCC compiler using the Microsoft C runtime
00334 # if defined(__MINGW32__)
00335 #   define __STL_NO_DRAND48
00336 #   ifdef _MT
00337 #     define __STL_WIN32THREADS
00338 #   endif
00339 # endif
00340 
00341 // Cygwin32, GCC compiler on MS Windows
00342 # if defined(__CYGWIN__)
00343 #   define __STL_NO_DRAND48
00344 # endif
00345 
00346 
00347 
00348 // Microsoft compiler.
00349 # if defined(_MSC_VER) && !defined(__ICL) && !defined(__MWERKS__)
00350 #   define __STL_NO_DRAND48
00351 #   define __STL_STATIC_CONST_INIT_BUG
00352 #   define __STL_NEED_TYPENAME
00353 #   define __STL_NO_USING_CLAUSE_IN_CLASS
00354 #   define __STL_NO_FRIEND_TEMPLATE_CLASS
00355 #   if _MSC_VER < 1100  /* 1000 is version 4.0, 1100 is 5.0, 1200 is 6.0. */
00356 #     define __STL_NEED_EXPLICIT
00357 #     define __STL_NO_BOOL
00358 #     define __STL_NO_BAD_ALLOC
00359 #   endif
00360 #   if _MSC_VER > 1000
00361 #     include <yvals.h>
00362 #     define __STL_DONT_USE_BOOL_TYPEDEF
00363 #   endif
00364 #   define __STL_NON_TYPE_TMPL_PARAM_BUG
00365 #   define __SGI_STL_NO_ARROW_OPERATOR
00366 #   define __STL_DEFAULT_CONSTRUCTOR_BUG
00367 #   ifdef _CPPUNWIND
00368 #     define __STL_USE_EXCEPTIONS
00369 #   endif
00370 #   ifdef _MT
00371 #     define __STL_WIN32THREADS
00372 #   endif
00373 #   if _MSC_VER >= 1200
00374 #     define __STL_PARTIAL_SPECIALIZATION_SYNTAX
00375 #     define __STL_HAS_NAMESPACES
00376 #     define __STL_CAN_THROW_RANGE_ERRORS
00377 #     define NOMINMAX
00378 #     undef min
00379 #     undef max
00380 // disable warning 'initializers put in unrecognized initialization area'
00381 #     pragma warning ( disable : 4075 )
00382 // disable warning 'empty controlled statement found'
00383 #     pragma warning ( disable : 4390 )
00384 // disable warning 'debug symbol greater than 255 chars'
00385 #     pragma warning ( disable : 4786 )
00386 #   endif
00387 #   if _MSC_VER < 1100
00388 #     define __STL_NO_EXCEPTION_HEADER
00389 #     define __STL_NO_BAD_ALLOC
00390 #   endif
00391     // Because of a Microsoft front end bug, we must not provide a
00392     // namespace qualifier when declaring a friend function.
00393 #   define __STD_QUALIFIER
00394 # endif
00395 
00396 # if defined(__BORLANDC__)
00397 #     define __STL_NO_BAD_ALLOC
00398 #     define __STL_NO_DRAND48
00399 #     define __STL_DEFAULT_CONSTRUCTOR_BUG
00400 #   if __BORLANDC__ >= 0x540 /* C++ Builder 4.0 */
00401 #     define __STL_CLASS_PARTIAL_SPECIALIZATION
00402 #     define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00403 #     define __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00404 #     define __STL_MEMBER_TEMPLATES
00405 #     define __STL_TEMPLATE_FRIENDS
00406 #   else
00407 #     define __STL_NEED_TYPENAME
00408 #     define __STL_LIMITED_DEFAULT_TEMPLATES
00409 #     define __SGI_STL_NO_ARROW_OPERATOR
00410 #     define __STL_NON_TYPE_TMPL_PARAM_BUG
00411 #   endif
00412 #   ifdef _CPPUNWIND
00413 #     define __STL_USE_EXCEPTIONS
00414 #   endif
00415 #   ifdef __MT__
00416 #     define __STL_WIN32THREADS
00417 #   endif
00418 # endif
00419 
00420 # if defined(__STL_NO_BOOL) && !defined(__STL_DONT_USE_BOOL_TYPEDEF)
00421     typedef int bool;
00422 #   define true 1
00423 #   define false 0
00424 # endif
00425 
00426 # ifdef __STL_NEED_TYPENAME
00427 #   define typename
00428 # endif
00429 
00430 # ifdef __STL_LIMITED_DEFAULT_TEMPLATES
00431 #   define __STL_DEPENDENT_DEFAULT_TMPL(_Tp)
00432 # else
00433 #   define __STL_DEPENDENT_DEFAULT_TMPL(_Tp) = _Tp
00434 # endif
00435 
00436 # ifdef __STL_MEMBER_TEMPLATE_KEYWORD
00437 #   define __STL_TEMPLATE template
00438 # else
00439 #   define __STL_TEMPLATE
00440 # endif
00441 
00442 # ifdef __STL_NEED_EXPLICIT
00443 #   define explicit
00444 # endif
00445 
00446 # ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00447 #   define __STL_NULL_TMPL_ARGS <>
00448 # else
00449 #   define __STL_NULL_TMPL_ARGS
00450 # endif
00451 
00452 # if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \
00453      || defined (__STL_PARTIAL_SPECIALIZATION_SYNTAX)
00454 #   define __STL_TEMPLATE_NULL template<>
00455 # else
00456 #   define __STL_TEMPLATE_NULL
00457 # endif
00458 
00459 // Use standard-conforming allocators if we have the necessary language
00460 // features.  __STL_USE_SGI_ALLOCATORS is a hook so that users can 
00461 // disable new-style allocators, and continue to use the same kind of
00462 // allocators as before, without having to edit library headers.
00463 # if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && \
00464      defined(__STL_MEMBER_TEMPLATES) && \
00465      defined(__STL_MEMBER_TEMPLATE_CLASSES) && \
00466     !defined(__STL_NO_BOOL) && \
00467     !defined(__STL_NON_TYPE_TMPL_PARAM_BUG) && \
00468     !defined(__STL_LIMITED_DEFAULT_TEMPLATES) && \
00469     !defined(__STL_USE_SGI_ALLOCATORS) 
00470 #   define __STL_USE_STD_ALLOCATORS
00471 # endif
00472 
00473 # ifndef __STL_DEFAULT_ALLOCATOR
00474 #   ifdef __STL_USE_STD_ALLOCATORS
00475 #     define __STL_DEFAULT_ALLOCATOR(T) allocator< T >
00476 #   else
00477 #     define __STL_DEFAULT_ALLOCATOR(T) alloc
00478 #   endif
00479 # endif
00480 
00481 // __STL_NO_NAMESPACES is a hook so that users can disable namespaces
00482 // without having to edit library headers.  __STL_NO_RELOPS_NAMESPACE is
00483 // a hook so that users can disable the std::rel_ops namespace, keeping 
00484 // the relational operator template in namespace std, without having to 
00485 // edit library headers.
00486 # if defined(__STL_HAS_NAMESPACES) && !defined(__STL_NO_NAMESPACES)
00487 #   define __STL_USE_NAMESPACES
00488 #   define __STD std
00489 #   define __STL_BEGIN_NAMESPACE namespace std {
00490 #   define __STL_END_NAMESPACE }
00491 #   if defined(__STL_FUNCTION_TMPL_PARTIAL_ORDER) && \
00492        !defined(__STL_NO_RELOPS_NAMESPACE)
00493 #     define __STL_USE_NAMESPACE_FOR_RELOPS
00494 #     define __STL_BEGIN_RELOPS_NAMESPACE namespace std { namespace rel_ops {
00495 #     define __STL_END_RELOPS_NAMESPACE } }
00496 #     define __STD_RELOPS std::rel_ops
00497 #   else /* Use std::rel_ops namespace */
00498 #     define __STL_USE_NAMESPACE_FOR_RELOPS
00499 #     define __STL_BEGIN_RELOPS_NAMESPACE namespace std {
00500 #     define __STL_END_RELOPS_NAMESPACE }
00501 #     define __STD_RELOPS std
00502 #   endif /* Use std::rel_ops namespace */
00503 # else
00504 #   define __STD 
00505 #   define __STL_BEGIN_NAMESPACE 
00506 #   define __STL_END_NAMESPACE 
00507 #   undef  __STL_USE_NAMESPACE_FOR_RELOPS
00508 #   define __STL_BEGIN_RELOPS_NAMESPACE 
00509 #   define __STL_END_RELOPS_NAMESPACE 
00510 #   define __STD_RELOPS 
00511 #   undef  __STL_USE_NAMESPACES
00512 # endif
00513 
00514 // Some versions of the EDG front end sometimes require an explicit
00515 // namespace spec where they shouldn't.  This macro facilitates that.
00516 // If the bug becomes irrelevant, then all uses of __STD_QUALIFIER
00517 // should be removed.  The 7.3 beta SGI compiler has this bug, but the
00518 // MR version is not expected to have it.
00519 
00520 # if defined(__STL_USE_NAMESPACES) && !defined(__STD_QUALIFIER)
00521 #   define __STD_QUALIFIER std::
00522 # else
00523 #   define __STD_QUALIFIER
00524 # endif
00525 
00526 # ifdef __STL_USE_EXCEPTIONS
00527 #   define __STL_TRY try
00528 #   define __STL_CATCH_ALL catch(...)
00529 #   define __STL_THROW(x) throw x
00530 #   define __STL_RETHROW throw
00531 #   define __STL_NOTHROW throw()
00532 #   define __STL_UNWIND(action) catch(...) { action; throw; }
00533 # else
00534 #   define __STL_TRY 
00535 #   define __STL_CATCH_ALL if (false)
00536 #   define __STL_THROW(x) 
00537 #   define __STL_RETHROW 
00538 #   define __STL_NOTHROW 
00539 #   define __STL_UNWIND(action) 
00540 # endif
00541 
00542 #ifdef __STL_ASSERTIONS
00543 # include <stdio.h>
00544 # define __stl_assert(expr) \
00545     if (!(expr)) { fprintf(stderr, "%s:%d STL assertion failure: %s\n", \
00546               __FILE__, __LINE__, # expr); abort(); }
00547 #else
00548 # define __stl_assert(expr)
00549 #endif
00550 
00551 #if defined(__STL_WIN32THREADS) || defined(__STL_SGI_THREADS) \
00552     || defined(__STL_PTHREADS)  || defined(__STL_UITHREADS)
00553 #   define __STL_THREADS
00554 #   define __STL_VOLATILE volatile
00555 #else
00556 #   define __STL_VOLATILE
00557 #endif
00558 
00559 // Because concept-checks do not presently work correctly, they 
00560 // are disabled.
00561 #if 0
00562 #if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \
00563     && defined(__STL_MEMBER_TEMPLATES) \
00564     && !defined(_STL_NO_CONCEPT_CHECKS)
00565 #  define __STL_USE_CONCEPT_CHECKS
00566 #endif
00567 #endif
00568 
00569 #endif /* __STL_CONFIG_H */
00570 
00571 // Local Variables:
00572 // mode:C++
00573 // End:

Generated on Mon Apr 8 03:11:38 2002 for libstdc++-v3 Source by doxygen1.2.15