Whole document tree stl_config.hGo 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 ![]() |