00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __STL_CONFIG_H
00028 # define __STL_CONFIG_H
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
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
00226
00227
00228
00229
00230
00231
00232
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
00246 # define __STL_UITHREADS
00247
00248
00249
00250
00251 # endif
00252 # endif
00253
00254
00255
00256 # ifdef __GNUC__
00257 # if __GNUC__ == 2 && __GNUC_MINOR__ <= 7
00258 # define __STL_STATIC_TEMPLATE_MEMBER_BUG
00259 # endif
00260 # if __GNUC__ < 2
00261 # define __STL_NEED_TYPENAME
00262 # define __STL_NEED_EXPLICIT
00263 # endif
00264 # if __GNUC__ == 2 && __GNUC_MINOR__ <= 8
00265 # define __STL_NO_EXCEPTION_HEADER
00266 # define __STL_NO_BAD_ALLOC
00267 # endif
00268 # if __GNUC__ == 2 && __GNUC_MINOR__ >= 8
00269 # define __STL_CLASS_PARTIAL_SPECIALIZATION
00270 # define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00271 # define __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00272 # define __STL_MEMBER_TEMPLATES
00273 # define __STL_CAN_THROW_RANGE_ERRORS
00274
00275
00276 # if __GNUC_MINOR__ >= 9
00277 # define __STL_MEMBER_TEMPLATE_CLASSES
00278 # define __STL_TEMPLATE_FRIENDS
00279 # define __SGI_STL_USE_AUTO_PTR_CONVERSIONS
00280 # define __STL_HAS_NAMESPACES
00281
00282 # endif
00283 # endif
00284 # define __STL_DEFAULT_CONSTRUCTOR_BUG
00285 # ifdef __EXCEPTIONS
00286 # define __STL_USE_EXCEPTIONS
00287 # endif
00288 # ifdef _REENTRANT
00289 # define __STL_PTHREADS
00290 # endif
00291 # if (__GNUC__ < 2) || (__GNUC__ == 2 && __GNUC_MINOR__ < 95)
00292 # define __STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE
00293 # endif
00294 # endif
00295
00296 # if defined(__SUNPRO_CC)
00297 # define __STL_NO_BOOL
00298 # define __STL_NEED_TYPENAME
00299 # define __STL_NEED_EXPLICIT
00300 # define __STL_USE_EXCEPTIONS
00301 # ifdef _REENTRANT
00302 # define __STL_PTHREADS
00303 # endif
00304 # define __SGI_STL_NO_ARROW_OPERATOR
00305 # define __STL_PARTIAL_SPECIALIZATION_SYNTAX
00306 # define __STL_NO_EXCEPTION_HEADER
00307 # define __STL_NO_BAD_ALLOC
00308 # endif
00309
00310 # if defined(__COMO__)
00311 # define __STL_MEMBER_TEMPLATES
00312 # define __STL_MEMBER_TEMPLATE_CLASSES
00313 # define __STL_TEMPLATE_FRIENDS
00314 # define __STL_CLASS_PARTIAL_SPECIALIZATION
00315 # define __STL_USE_EXCEPTIONS
00316 # define __STL_HAS_NAMESPACES
00317 # endif
00318
00319
00320 # if defined(__ICL)
00321 # define __STL_LONG_LONG
00322 # define __STL_MEMBER_TEMPLATES
00323 # define __STL_MEMBER_TEMPLATE_CLASSES
00324 # define __STL_TEMPLATE_FRIENDS
00325 # define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00326 # define __STL_CLASS_PARTIAL_SPECIALIZATION
00327 # define __STL_NO_DRAND48
00328 # define __STL_HAS_NAMESPACES
00329 # define __STL_USE_EXCEPTIONS
00330 # define __STL_MEMBER_TEMPLATE_KEYWORD
00331 # ifdef _CPPUNWIND
00332 # define __STL_USE_EXCEPTIONS
00333 # endif
00334 # ifdef _MT
00335 # define __STL_WIN32THREADS
00336 # endif
00337 # endif
00338
00339
00340 # if defined(__MINGW32__)
00341 # define __STL_NO_DRAND48
00342 # ifdef _MT
00343 # define __STL_WIN32THREADS
00344 # endif
00345 # endif
00346
00347
00348 # if defined(__CYGWIN__)
00349 # define __STL_NO_DRAND48
00350 # endif
00351
00352
00353
00354
00355 # if defined(_MSC_VER) && !defined(__ICL) && !defined(__MWERKS__)
00356 # define __STL_NO_DRAND48
00357 # define __STL_STATIC_CONST_INIT_BUG
00358
00359 # define __STL_NEED_TYPENAME
00360
00361 # define __STL_NO_USING_CLAUSE_IN_CLASS
00362 # define __STL_NO_FRIEND_TEMPLATE_CLASS
00363 # if _MSC_VER < 1100
00364 # define __STL_NEED_EXPLICIT
00365 # define __STL_NO_BOOL
00366 # define __STL_NO_BAD_ALLOC
00367 # endif
00368 # if _MSC_VER > 1000
00369 # ifndef UNDER_CE
00370 # include <yvals.h>
00371 # endif
00372 # define __STL_DONT_USE_BOOL_TYPEDEF
00373 # endif
00374 # define __STL_NON_TYPE_TMPL_PARAM_BUG
00375 # define __SGI_STL_NO_ARROW_OPERATOR
00376 # define __STL_DEFAULT_CONSTRUCTOR_BUG
00377 # ifdef _CPPUNWIND
00378 # define __STL_USE_EXCEPTIONS
00379 # endif
00380 # ifdef UNDER_CE
00381 # undef __STL_USE_EXCEPTIONS //Make sure no exception syntax used
00382 # endif
00383 # ifdef _MT
00384 # define __STL_WIN32THREADS
00385 # endif
00386 # if _MSC_VER >= 1200
00387 # define __STL_PARTIAL_SPECIALIZATION_SYNTAX
00388 # define __STL_HAS_NAMESPACES
00389 # define __STL_CAN_THROW_RANGE_ERRORS
00390 # define NOMINMAX
00391 # undef min
00392 # undef max
00393
00394 # pragma warning ( disable : 4075 )
00395
00396 # pragma warning ( disable : 4390 )
00397
00398 # pragma warning ( disable : 4786 )
00399 # endif
00400 # if (_MSC_VER < 1100)
00401 # define __STL_NO_EXCEPTION_HEADER
00402 # define __STL_NO_BAD_ALLOC
00403 # endif
00404 # if defined UNDER_CE
00405 # define __STL_NO_EXCEPTION_HEADER
00406 # endif
00407
00408
00409 # define __STD_QUALIFIER
00410 # endif
00411
00412 # if defined(__BORLANDC__)
00413 # define __STL_NO_BAD_ALLOC
00414 # define __STL_NO_DRAND48
00415 # define __STL_DEFAULT_CONSTRUCTOR_BUG
00416 # if __BORLANDC__ >= 0x540
00417 # define __STL_CLASS_PARTIAL_SPECIALIZATION
00418 # define __STL_FUNCTION_TMPL_PARTIAL_ORDER
00419 # define __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00420 # define __STL_MEMBER_TEMPLATES
00421 # define __STL_TEMPLATE_FRIENDS
00422 # else
00423 # define __STL_NEED_TYPENAME
00424 # define __STL_LIMITED_DEFAULT_TEMPLATES
00425 # define __SGI_STL_NO_ARROW_OPERATOR
00426 # define __STL_NON_TYPE_TMPL_PARAM_BUG
00427 # endif
00428 # ifdef _CPPUNWIND
00429 # define __STL_USE_EXCEPTIONS
00430 # endif
00431 # ifdef __MT__
00432 # define __STL_WIN32THREADS
00433 # endif
00434 # endif
00435
00436 # if defined(__STL_NO_BOOL) && !defined(__STL_DONT_USE_BOOL_TYPEDEF)
00437 typedef int bool;
00438 # define true 1
00439 # define false 0
00440 # endif
00441
00442 # ifdef __STL_NEED_TYPENAME
00443 # define typename
00444 # endif
00445
00446 # ifdef __STL_LIMITED_DEFAULT_TEMPLATES
00447 # define __STL_DEPENDENT_DEFAULT_TMPL(_Tp)
00448 # else
00449 # define __STL_DEPENDENT_DEFAULT_TMPL(_Tp) = _Tp
00450 # endif
00451
00452 # ifdef __STL_MEMBER_TEMPLATE_KEYWORD
00453 # define __STL_TEMPLATE template
00454 # else
00455 # define __STL_TEMPLATE
00456 # endif
00457
00458 # ifdef __STL_NEED_EXPLICIT
00459 # define explicit
00460 # endif
00461
00462 # ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
00463 # define __STL_NULL_TMPL_ARGS <>
00464 # else
00465 # define __STL_NULL_TMPL_ARGS
00466 # endif
00467
00468 # if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \
00469 || defined (__STL_PARTIAL_SPECIALIZATION_SYNTAX)
00470 # define __STL_TEMPLATE_NULL template<>
00471 # else
00472 # define __STL_TEMPLATE_NULL
00473 # endif
00474
00475
00476
00477
00478
00479 # if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && \
00480 defined(__STL_MEMBER_TEMPLATES) && \
00481 defined(__STL_MEMBER_TEMPLATE_CLASSES) && \
00482 !defined(__STL_NO_BOOL) && \
00483 !defined(__STL_NON_TYPE_TMPL_PARAM_BUG) && \
00484 !defined(__STL_LIMITED_DEFAULT_TEMPLATES) && \
00485 !defined(__STL_USE_SGI_ALLOCATORS)
00486 # define __STL_USE_STD_ALLOCATORS
00487 # endif
00488
00489 # ifndef __STL_DEFAULT_ALLOCATOR
00490 # ifdef __STL_USE_STD_ALLOCATORS
00491 # define __STL_DEFAULT_ALLOCATOR(T) allocator< T >
00492 # else
00493 # define __STL_DEFAULT_ALLOCATOR(T) alloc
00494 # endif
00495 # endif
00496
00497
00498
00499
00500
00501
00502 # if defined(__STL_HAS_NAMESPACES) && !defined(__STL_NO_NAMESPACES)
00503 # define __STL_USE_NAMESPACES
00504 # define __STD std
00505 # define __STL_BEGIN_NAMESPACE namespace std {
00506 # define __STL_END_NAMESPACE }
00507 # if defined(__STL_FUNCTION_TMPL_PARTIAL_ORDER) && \
00508 !defined(__STL_NO_RELOPS_NAMESPACE)
00509 # define __STL_USE_NAMESPACE_FOR_RELOPS
00510 # define __STL_BEGIN_RELOPS_NAMESPACE namespace std { namespace rel_ops {
00511 # define __STL_END_RELOPS_NAMESPACE } }
00512 # define __STD_RELOPS std::rel_ops
00513 # else
00514 # define __STL_USE_NAMESPACE_FOR_RELOPS
00515 # define __STL_BEGIN_RELOPS_NAMESPACE namespace std {
00516 # define __STL_END_RELOPS_NAMESPACE }
00517 # define __STD_RELOPS std
00518 # endif
00519 # else
00520 # define __STD
00521 # define __STL_BEGIN_NAMESPACE
00522 # define __STL_END_NAMESPACE
00523 # undef __STL_USE_NAMESPACE_FOR_RELOPS
00524 # define __STL_BEGIN_RELOPS_NAMESPACE
00525 # define __STL_END_RELOPS_NAMESPACE
00526 # define __STD_RELOPS
00527 # undef __STL_USE_NAMESPACES
00528 # endif
00529
00530
00531
00532
00533
00534
00535
00536 # if defined(__STL_USE_NAMESPACES) && !defined(__STD_QUALIFIER)
00537 # define __STD_QUALIFIER std::
00538 # else
00539 # define __STD_QUALIFIER
00540 # endif
00541
00542 # ifdef __STL_USE_EXCEPTIONS
00543 # define __STL_TRY try
00544 # define __STL_CATCH_ALL catch(...)
00545 # define __STL_THROW(x) throw x
00546 # define __STL_RETHROW throw
00547 # define __STL_NOTHROW throw()
00548 # define __STL_UNWIND(action) catch(...) { action; throw; }
00549 # else
00550 # define __STL_TRY
00551 # define __STL_CATCH_ALL if (false)
00552 # define __STL_THROW(x)
00553 # define __STL_RETHROW
00554 # define __STL_NOTHROW
00555 # define __STL_UNWIND(action)
00556 # endif
00557
00558 #ifdef __STL_ASSERTIONS
00559 #ifndef UNDER_CE
00560 # include <stdio.h>
00561 # define __stl_assert(expr) \
00562 if (!(expr)) { fprintf(stderr, "%s:%d STL assertion failure: %s\n", \
00563 __FILE__, __LINE__, # expr); abort(); }
00564 #else //UNDER_CE
00565 #include <wce_defs.h>
00566 # define __stl_assert(expr) assert(expr);
00567 #endif //UNDER_CE
00568 #else
00569 # define __stl_assert(expr)
00570 #endif
00571
00572 #if defined(__STL_WIN32THREADS) || defined(__STL_SGI_THREADS) \
00573 || defined(__STL_PTHREADS) || defined(__STL_UITHREADS)
00574 # define __STL_THREADS
00575 # define __STL_VOLATILE volatile
00576 #else
00577 # define __STL_VOLATILE
00578 #endif
00579
00580 #if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \
00581 && defined(__STL_MEMBER_TEMPLATES) \
00582 && !defined(_STL_NO_CONCEPT_CHECKS)
00583 # define __STL_USE_CONCEPT_CHECKS
00584 #endif
00585
00586
00587 #endif
00588
00589
00590
00591