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 #ifndef _STLP_CONFIG_H
00027 # define _STLP_CONFIG_H
00028
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 # define __SGI_STL 0x330
00054
00055
00056 # define _STLPORT_VERSION 0x451
00057
00058
00059
00060
00061
00062 # include <stl_user_config.h>
00063
00064
00065
00066
00067 # include <stl/_config_compat.h>
00068
00069
00070
00071 # include <stl/_site_config.h>
00072
00073
00074 # include <config/stlcomp.h>
00075
00076
00077
00078
00079
00080
00081
00082
00083 # include <config/stl_confix.h>
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 # if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES)
00095 # define _STLP_MEMBER_TEMPLATES 1
00096 # endif
00097
00098 # if !defined (_STLP_NO_FRIEND_TEMPLATES) && !defined (_STLP_FRIEND_TEMPLATES)
00099 # define _STLP_FRIEND_TEMPLATES 1
00100 # endif
00101
00102 # if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
00103 # define _STLP_MEMBER_TEMPLATE_CLASSES 1
00104 # endif
00105
00106 #if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
00107 # define _STLP_CLASS_PARTIAL_SPECIALIZATION 1
00108 #endif
00109
00110 #if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
00111 # define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1
00112 #endif
00113
00114 # if !defined (_STLP_BIG_ENDIAN) && ! defined (_STLP_LITTLE_ENDIAN)
00115 # if defined(_MIPSEB) || defined (__sparc) || \
00116 defined (_AIX) || defined (__hpux) || defined(macintosh) || defined (_MAC)
00117 # define _STLP_BIG_ENDIAN 1
00118 # elif defined(__i386) || defined(_M_IX86)
00119 # define _STLP_LITTLE_ENDIAN 1
00120 # else
00121 # define _STLP_UNKNOWN_ENDIAN 1
00122 # endif
00123 # endif
00124
00125
00126
00127
00128
00129 #ifndef _STLP_UINT32_T
00130 # define _STLP_UINT32_T unsigned long
00131 #endif
00132 #ifndef _STLP_ABORT
00133 # define _STLP_ABORT() abort()
00134 #endif
00135
00136 # if !defined (_STLP_HAS_NO_NAMESPACES)
00137 # if defined _STLP_NO_NAMESPACES
00138 # undef _STLP_USE_NAMESPACES
00139 # else
00140
00141 # undef _STLP_USE_NAMESPACES
00142 # define _STLP_USE_NAMESPACES 1
00143 # endif
00144 # endif
00145
00146 # if defined (_STLP_NO_IOSTREAMS)
00147 # define _STLP_USE_NO_IOSTREAMS
00148 # endif
00149
00150 # if defined (_STLP_USE_NO_IOSTREAMS)
00151 # undef _STLP_USE_NEW_IOSTREAMS
00152 # endif
00153
00154 # if ( defined (_STLP_OWN_IOSTREAMS) || ! defined (_STLP_HAS_NO_NEW_IOSTREAMS)) \
00155 && ! defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_USE_NEW_IOSTREAMS)
00156 # define _STLP_USE_NEW_IOSTREAMS
00157 # endif
00158
00159 # if defined (_STLP_NO_NEW_IOSTREAMS)
00160 # undef _STLP_USE_NEW_IOSTREAMS
00161 # undef _STLP_OWN_IOSTREAMS
00162 # endif
00163
00164
00165 # if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX) || defined (__NetBSD__) || defined (__Lynx__)
00166 # define _STLP_UNIX 1
00167 # if defined (__linux__) && ! defined (_STLP_USE_GLIBC)
00168 # define _STLP_USE_GLIBC 1
00169 # endif
00170 # elif defined(macintosh) || defined (_MAC)
00171 # define _STLP_MAC 1
00172 # elif (defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__)) && !defined (__SYMBIAN32__)
00173 # define _STLP_WIN32 1
00174 # elif defined (__WIN16) || defined (WIN16) || defined (_WIN16)
00175 # define _STLP_WIN16
00176 # endif
00177
00178 # if !defined(_STLP_MAKE_HEADER)
00179 # define _STLP_MAKE_HEADER(path, header) <path/header>
00180 # endif
00181
00182 #if !defined (_STLP_NATIVE_HEADER)
00183 # if !defined (_STLP_NATIVE_INCLUDE_PATH)
00184 # define _STLP_NATIVE_INCLUDE_PATH ../include
00185 # endif
00186 # define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header)
00187 #endif
00188
00189
00190 #if !defined (_STLP_NATIVE_C_HEADER)
00191 # if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
00192 # define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
00193 # endif
00194 # define _STLP_NATIVE_C_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_C_INCLUDE_PATH,header)
00195 #endif
00196
00197
00198 #if !defined (_STLP_NATIVE_CPP_C_HEADER)
00199 # if !defined (_STLP_NATIVE_CPP_C_INCLUDE_PATH)
00200 # define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
00201 # endif
00202 # define _STLP_NATIVE_CPP_C_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_C_INCLUDE_PATH,header)
00203 #endif
00204
00205
00206 #if !defined ( _STLP_NATIVE_OLD_STREAMS_HEADER )
00207 # if !defined (_STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH)
00208 # define _STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
00209 # endif
00210 # define _STLP_NATIVE_OLD_STREAMS_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH,header)
00211 #endif
00212
00213
00214 #if !defined ( _STLP_NATIVE_CPP_RUNTIME_HEADER )
00215 # if !defined (_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH)
00216 # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
00217 # endif
00218 # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH,header)
00219 #endif
00220
00221
00222
00223 #if defined (__BUILDING_STLPORT)
00224
00225 # undef _STLP_DESIGNATED_DLL
00226 # define _STLP_DESIGNATED_DLL 1
00227 #endif
00228
00229
00230 # if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \
00231 !defined(_STLP_NO_OWN_NAMESPACE)
00232 # undef _STLP_USE_OWN_NAMESPACE
00233 # define _STLP_USE_OWN_NAMESPACE 1
00234 # else
00235 # undef _STLP_WHOLE_NATIVE_STD
00236 # endif
00237
00238 # undef _STLP_NAMESPACE
00239
00240 # if !defined(_NOTHREADS) && ! defined (_STLP_THREADS_DEFINED)
00241
00242 # if defined(_PTHREADS)
00243 # define _STLP_PTHREADS
00244 # define _STLP_THREADS
00245 # endif
00246 # if defined(_UITHREADS)
00247 # define _STLP_UITHREADS
00248 # define _STLP_THREADS
00249 # endif
00250
00251 # if defined (__sgi) && ! defined (__KCC) && ! defined (__GNUC__)
00252 # define _STLP_SGI_THREADS
00253 # elif defined(__DECC) || defined(__DECCXX)
00254 # define _STLP_DEC_THREADS
00255 # elif defined (_STLP_WIN32) && ! defined (_STLP_PTHREADS)
00256 # define _STLP_WIN32THREADS 1
00257 # elif ((defined (__sun) && !defined (__linux__)) \
00258 || defined(_UITHREADS) ) && !defined(_STLP_PTHREADS)
00259 # define _STLP_UITHREADS
00260 # elif defined (__OS2__)
00261 # define _STLP_OS2THREADS
00262 # elif defined(__BEOS__)
00263 # define _STLP_BETHREADS
00264 # else
00265 # define _STLP_PTHREADS
00266 # endif
00267 # define _STLP_THREADS_DEFINED
00268 # endif
00269
00270 # if defined (_REENTRANT) && ! defined (_STLP_THREADS)
00271 # define _STLP_THREADS
00272 # endif
00273
00274 # define _STLP_STATIC_MUTEX _STLP_mutex_base
00275
00276 # if defined (_MFC_VER) && !defined (_STLP_USE_MFC) && !defined (__SYMBIAN32__)
00277 # define _STLP_USE_MFC 1
00278 # endif
00279
00280 #if defined (_STLP_THREADS)
00281 # define _STLP_VOLATILE volatile
00282
00283 # if defined (_STLP_WIN32THREADS) && defined (_STLP_NO_BOOL)
00284 # undef NOMINMAX
00285 # define NOMINMAX
00286 # ifdef _STLP_USE_MFC
00287 # include <afx.h>
00288 # else
00289 # include <windows.h>
00290 # endif
00291 # define _STLP_WINDOWS_H_INCLUDED
00292 # endif
00293 #else
00294 # define _STLP_VOLATILE
00295 #endif
00296
00297 # if !defined ( _STLP_USE_NEW_C_HEADERS ) && !defined ( _STLP_HAS_NO_NEW_C_HEADERS )
00298 # define _STLP_USE_NEW_C_HEADERS
00299 # endif
00300
00301 # if defined ( _STLP_NO_NEW_C_HEADERS )
00302 # undef _STLP_USE_NEW_C_HEADERS
00303 # endif
00304
00305 # if !defined ( _STLP_STATIC_TEMPLATE_DATA )
00306 # define _STLP_STATIC_TEMPLATE_DATA 1
00307 # endif
00308
00309 # if defined (_STLP_BASE_TYPEDEF_BUG)
00310 # undef _STLP_BASE_TYPEDEF_OUTSIDE_BUG
00311 # define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
00312 # endif
00313
00314 # if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) || (defined (_STLP_MSVC) && (_STLP_MSVC < 1100))
00315 # define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG
00316 # endif
00317
00318
00319 #ifdef _STLP_INLINE_STRING_LITERAL_BUG
00320 # define _STLP_FIX_LITERAL_BUG(__x) __x=__x;
00321 #else
00322 # define _STLP_FIX_LITERAL_BUG(__x)
00323 #endif
00324
00325 # if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
00326 # undef _STLP_NO_DEFAULT_NON_TYPE_PARAM
00327 # define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
00328 # endif
00329
00330 # define _STLP_NEW new
00331 # define _STLP_PLACEMENT_NEW new
00332
00333 # ifdef _STLP_DEBUG
00334 # define _STLP_ASSERTIONS 1
00335 # endif
00336
00337
00338 #ifndef _STLP_MPWFIX_TRY
00339 # define _STLP_MPWFIX_TRY
00340 #endif
00341 #ifndef _STLP_MPWFIX_CATCH
00342 # define _STLP_MPWFIX_CATCH
00343 #endif
00344 #ifndef _STLP_MPWFIX_CATCH_ACTION
00345 # define _STLP_MPWFIX_CATCH_ACTION(action)
00346 #endif
00347
00348
00349
00350 # if !defined( _STLP_ASSERTIONS ) && !defined(_STLP_DEBUG) && !defined(_STLP_DEBUG_ALLOC)
00351 # define _STLP_ASSERT(expr)
00352 # endif
00353
00354 # ifndef _STLP_DEBUG
00355 # define _STLP_VERBOSE_ASSERT(expr,diagnostic)
00356 # define _STLP_DEBUG_CHECK(expr)
00357 # define _STLP_DEBUG_DO(expr)
00358 # endif
00359
00360 # if !defined (_STLP_WEAK)
00361 # define _STLP_WEAK
00362 # endif
00363
00364
00365 # if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
00366 # define __DFL_TMPL_PARAM( classname, defval ) class classname
00367 # define __DFL_TMPL_ARG(classname) , classname
00368 # else
00369 # define _STLP_DEFAULT_TYPE_PARAM 1
00370 # define __DFL_TMPL_PARAM( classname, defval ) class classname = defval
00371 # define __DFL_TMPL_ARG(classname)
00372 # endif
00373
00374
00375 # if defined ( _STLP_DEFAULT_TYPE_PARAM )
00376 # define __DFL_TYPE_PARAM( classname, defval ) class classname = defval
00377 # define __DFL_NON_TYPE_PARAM(type,name,val) type name = val
00378 # define __DFL_TYPE_ARG(classname)
00379 # else
00380 # define __DFL_TYPE_PARAM( classname, defval ) class classname
00381 # define __DFL_NON_TYPE_PARAM(type,name,val) type name
00382 # define __DFL_TYPE_ARG(classname) , classname
00383 # endif
00384
00385
00386
00387 #ifdef _STLP_NO_WCHAR_T
00388 # ifndef _STLP_NO_NATIVE_WIDE_STREAMS
00389 # define _STLP_NO_NATIVE_WIDE_STREAMS 1
00390 # endif
00391 #else
00392 # define _STLP_HAS_WCHAR_T 1
00393 #endif
00394
00395 #if !defined (_STLP_NO_AT_MEMBER_FUNCTION)
00396 # define _STLP_CAN_THROW_RANGE_ERRORS 1
00397 #endif
00398
00399 # if !defined (_STLP_USE_RAW_SGI_ALLOCATORS)
00400 # define _STLP_DEFAULT_ALLOCATOR(_Tp) allocator< _Tp >
00401 # define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) __DFL_TMPL_PARAM(_Alloc, allocator< _Tp >)
00402 # define _STLP_DEFAULT_PAIR_ALLOCATOR(_Key, _Tp) allocator< pair < _Key, _Tp > >
00403 # if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
00404 # define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc
00405 # define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
00406 # else
00407 # define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \
00408 class _Alloc = allocator< pair < _Key, _Tp > >
00409 # endif
00410 # else
00411 # define _STLP_DEFAULT_ALLOCATOR( _Tp ) __sgi_alloc
00412 # define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) __DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
00413 # define _STLP_DEFAULT_PAIR_ALLOCATOR( _Key, _Tp ) __sgi_alloc
00414 # define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) __DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
00415 # if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) && !defined (_STLP_DEFAULT_TYPE_PARAM)
00416 # define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
00417 # endif
00418 # endif
00419
00420
00421 # if defined ( _STLP_USE_WRAPPER_FOR_ALLOC_PARAM )
00422 # define __WORKAROUND_RENAME(X) __##X
00423 # else
00424 # define __WORKAROUND_RENAME(X) X
00425 # endif
00426 # if defined ( _STLP_DEBUG )
00427 # define __WORKAROUND_DBG_RENAME(X) __##X
00428 # else
00429 # define __WORKAROUND_DBG_RENAME(X) __WORKAROUND_RENAME(X)
00430 # endif
00431 # define __FULL_NAME(X) __WORKAROUND_RENAME(X)
00432
00433
00434 # if defined (_STLP_HAS_NO_NEW_C_HEADERS) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
00435 # define _STLP_VENDOR_GLOBAL_CSTD 1
00436 # endif
00437
00438
00439
00440
00441
00442
00443
00444 # if !defined (_STLP_HAS_NO_NAMESPACES)
00445
00446
00447 # if defined (_STLP_WHOLE_NATIVE_STD)
00448 # define _STLP_IMPORT_VENDOR_STD 1
00449 # undef _STLP_MINIMUM_IMPORT_STD
00450 # elif (defined (_STLP_USE_OWN_NAMESPACE) || ( defined (_STLP_DEBUG) && defined (_STLP_USE_NAMESPACES))) \
00451 && defined (_STLP_USE_NEW_IOSTREAMS) && ! defined (_STLP_OWN_IOSTREAMS)
00452 # define _STLP_IMPORT_VENDOR_STD 1
00453 # endif
00454
00455
00456
00457
00458 # if defined (_STLP_USE_NAMESPACES) && \
00459 ( defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD))
00460 # define _STLP_IMPORT_VENDOR_CSTD 1
00461 # endif
00462
00463 # if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && ! defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS)
00464 # define _STLP_NO_CSTD_FUNCTION_IMPORTS
00465 # endif
00466
00467 # define _STLP_USING_NAMESPACE(x) using namespace x ;
00468
00469 namespace std { }
00470 namespace __std_alias = std;
00471
00472
00473 # ifdef _STLP_VENDOR_GLOBAL_STD
00474 # define _STLP_VENDOR_STD
00475 # define _STLP_USING_VENDOR_STD
00476 # else
00477 # define _STLP_VENDOR_STD __std_alias
00478 # define _STLP_USING_VENDOR_STD _STLP_USING_NAMESPACE(_STLP_VENDOR_STD)
00479
00480 # endif
00481
00482
00483 # if defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS)
00484
00485 # define _STLP_VENDOR_CSTD
00486 # define _STLP_USING_VENDOR_CSTD
00487 # else
00488 # define _STLP_VENDOR_CSTD _STLP_VENDOR_STD
00489 # define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD)
00490 # endif
00491
00492 # ifdef _STLP_VENDOR_GLOBAL_EXCEPT_STD
00493 # define _STLP_VENDOR_EXCEPT_STD
00494 # else
00495 # define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD
00496 # endif
00497 # define _STLP_OLD_IO_NAMESPACE
00498 # ifndef _STLP_VENDOR_MB_NAMESPACE
00499 # define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD
00500 # endif
00501 # else
00502
00503 # define _STLP_VENDOR_STD
00504 # define _STLP_VENDOR_CSTD
00505 # define _STLP_USING_NAMESPACE(x)
00506 # define _STLP_USING_VENDOR_CSTD
00507 # define _STLP_USING_VENDOR_STD
00508 # define _STLP_VENDOR_EXCEPT_STD
00509 # endif
00510
00511 # if defined (_STLP_USE_NAMESPACES)
00512
00513 # if defined (_STLP_USE_OWN_NAMESPACE)
00514 # define _STLP_STD _STL
00515 # else
00516 # ifdef _STLP_DEBUG
00517 namespace stdD = std;
00518 # endif
00519 # define _STLP_STD std
00520 # endif
00521
00522 # define _STLP_BEGIN_NAMESPACE namespace _STLP_STD {
00523 # define _STLP_END_NAMESPACE }
00524
00525 _STLP_BEGIN_NAMESPACE _STLP_END_NAMESPACE
00526
00527 namespace stlport = _STLP_STD;
00528
00529
00530 # if defined(_STLP_NO_RELOPS_NAMESPACE)
00531 # define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {}
00532 # define _STLP_END_RELOPS_NAMESPACE }
00533 # else
00534
00535 # define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {
00536 # define _STLP_END_RELOPS_NAMESPACE } }
00537 # define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
00538 # endif
00539
00540 # else
00541
00542 # define _STLP_STD
00543 # define _STLP_BEGIN_NAMESPACE
00544 # define _STLP_END_NAMESPACE
00545
00546
00547
00548
00549 # ifndef _STLP_NO_RELOPS_NAMESPACE
00550 # define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
00551 # endif
00552 # define _STLP_BEGIN_RELOPS_NAMESPACE
00553 # define _STLP_END_RELOPS_NAMESPACE
00554 # undef _STLP_USE_OWN_NAMESPACE
00555 # endif
00556
00557 # define STLPORT_CSTD _STLP_VENDOR_CSTD
00558 # define STLPORT _STLP_STD
00559
00560 #if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG)
00561 # define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy<T>
00562 #else
00563 # define _STLP_SIMPLE_TYPE(T) T
00564 #endif
00565
00566
00567 # if defined (_STLP_USE_NEW_IOSTREAMS) && !defined (_STLP_OWN_IOSTREAMS)
00568 # define _STLP_USE_NATIVE_STRING 1
00569 # define _STLP_USE_NATIVE_STDEXCEPT 1
00570 # endif
00571
00572 # ifndef _STLP_RAND48
00573 # define _STLP_NO_DRAND48
00574 # endif
00575
00576
00577 # define __STL_NAMESPACE _STLP_STD
00578 # define __STL_NAME(name) _STLP_STD::name
00579
00580
00581 # ifndef _STLP_NO_NEW_STYLE_CASTS
00582 # define __CONST_CAST(__x,__y) const_cast<__x>(__y)
00583 # define __STATIC_CAST(__x,__y) static_cast<__x>(__y)
00584 # define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y)
00585 # define __DYNAMIC_CAST(__x,__y) dynamic_cast<__x>(__y)
00586 # else
00587 # define __STATIC_CAST(__x,__y) ((__x)(__y))
00588 # define __CONST_CAST(__x,__y) ((__x)(__y))
00589 # define __REINTERPRET_CAST(__x,__y) ((__x)(__y))
00590 # define __DYNAMIC_CAST(__x,__y) ((__x)(__y))
00591 # endif
00592 # if defined (_STLP_NEED_TYPENAME) && ! defined (typename)
00593 # define typename
00594 # endif
00595 # if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE )
00596 # define _STLP_TYPENAME_ON_RETURN_TYPE
00597 # else
00598 # define _STLP_TYPENAME_ON_RETURN_TYPE typename
00599 # endif
00600 # ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
00601 # define _STLP_HEADER_TYPENAME
00602 # else
00603 # define _STLP_HEADER_TYPENAME typename
00604 # endif
00605 # ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD
00606 # define _STLP_TEMPLATE template
00607 # else
00608 # define _STLP_TEMPLATE
00609 # endif
00610 # if defined (_STLP_NEED_EXPLICIT) && ! defined (explicit)
00611 # define explicit
00612 # endif
00613 # ifndef _STLP_NEED_MUTABLE
00614 # define __ASSIGN_MUTABLE(type,x,y) x=y
00615 # else
00616 # define __ASSIGN_MUTABLE(type,x,y) __CONST_CAST(type,x)=y
00617 # define mutable
00618 # endif
00619 # if defined (_STLP_NO_SIGNED_BUILTINS)
00620
00621 # define signed
00622 # endif
00623
00624 # if defined (_STLP_LOOP_INLINE_PROBLEMS)
00625 # define _STLP_INLINE_LOOP
00626 # else
00627 # define _STLP_INLINE_LOOP inline
00628 # endif
00629
00630 # define _STLP_PRIVATE public
00631 # define _STLP_PROTECTED public
00632
00633 # ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
00634 # define _STLP_TEMPLATE_NULL template<>
00635 # else
00636 # define _STLP_TEMPLATE_NULL
00637 # endif
00638
00639 #ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
00640 # define _STLP_OPERATOR_TEMPLATE
00641 # else
00642 # define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL
00643 #endif
00644
00645 # ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION
00646
00647 # if ! defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
00648 # define _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
00649 # endif
00650
00651 # if ( defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
00652 # if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES )
00653 # define _STLP_USE_OLD_HP_ITERATOR_QUERIES
00654 # endif
00655 # elif defined ( _STLP_NO_ANACHRONISMS )
00656 # undef _STLP_USE_OLD_HP_ITERATOR_QUERIES
00657 # endif
00658 # endif
00659
00660 # ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
00661 # define _STLP_NULL_TMPL_ARGS <>
00662 # else
00663 # define _STLP_NULL_TMPL_ARGS
00664 # endif
00665
00666 # ifndef _STLP_ALLOCATOR_TYPE_DFL
00667 # ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
00668 # define _STLP_ALLOCATOR_TYPE_DFL
00669 # else
00670 # define _STLP_ALLOCATOR_TYPE_DFL = allocator_type()
00671 # endif
00672 # endif
00673
00674 # if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR)
00675 # define _STLP_NO_ARROW_OPERATOR
00676 # endif
00677
00678 # if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
00679 # if !( defined (_STLP_NO_ARROW_OPERATOR)) \
00680 && !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY)
00681
00682 # define _STLP_MSVC50_COMPATIBILITY 1
00683 # endif
00684 # endif
00685
00686 #if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
00687 # if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) )
00688 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00689 typedef typename _STLP_STD :: reverse_iterator<const_iterator> const_reverse_iterator; \
00690 typedef typename _STLP_STD :: reverse_iterator<iterator> reverse_iterator
00691 # elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__)
00692 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00693 typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<const_iterator> const_reverse_iterator; \
00694 typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<iterator> reverse_iterator
00695 # else
00696 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00697 typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator; \
00698 typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator
00699 # endif
00700 #else
00701 # if defined (_STLP_MSVC50_COMPATIBILITY)
00702 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00703 typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
00704 const_pointer, difference_type> const_reverse_iterator; \
00705 typedef _STLP_STD::__reverse_iterator<iterator, value_type, reference, pointer, difference_type> \
00706 reverse_iterator
00707 # else
00708 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00709 typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
00710 difference_type> const_reverse_iterator; \
00711 typedef _STLP_STD::__reverse_iterator<iterator, value_type, \
00712 reference, difference_type> \
00713 reverse_iterator
00714 # endif
00715 #endif
00716
00717 # define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \
00718 _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator)
00719 # define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \
00720 _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator)
00721
00722 # define __IMPORT_CONTAINER_TYPEDEFS(_Super) \
00723 typedef typename _Super::value_type value_type; \
00724 typedef typename _Super::size_type size_type; \
00725 typedef typename _Super::difference_type difference_type; \
00726 typedef typename _Super::reference reference; \
00727 typedef typename _Super::const_reference const_reference; \
00728 typedef typename _Super::pointer pointer; \
00729 typedef typename _Super::const_pointer const_pointer; \
00730 typedef typename _Super::allocator_type allocator_type;
00731
00732
00733 # define __IMPORT_ITERATORS(_Super) \
00734 typedef typename _Super::iterator iterator; \
00735 typedef typename _Super::const_iterator const_iterator;
00736
00737 # define __IMPORT_REVERSE_ITERATORS(_Super) \
00738 typedef typename _Super::const_reverse_iterator const_reverse_iterator; \
00739 typedef typename _Super::reverse_iterator reverse_iterator;
00740
00741 # define __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER) \
00742 __derived_name(const _Super& __x) : _SUPER(__x) {} \
00743 _Self& operator=(const _Super& __x) { \
00744 *(_Super*)this = __x; \
00745 return *this; \
00746 } \
00747 __derived_name(const _Self& __x) : _SUPER(__x) {} \
00748 _Self& operator=(const _Self& __x) { \
00749 *(_Super*)this = __x; \
00750 return *this; \
00751 }
00752
00753 # define __IMPORT_WITH_ITERATORS(_Super) \
00754 __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super)
00755
00756 # define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \
00757 __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super)
00758
00759 # if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG)
00760 # define __TRIVIAL_CONSTRUCTOR(__type) __type() {}
00761 # else
00762 # define __TRIVIAL_CONSTRUCTOR(__type)
00763 # endif
00764 # if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG)
00765 # define __TRIVIAL_DESTRUCTOR(__type) ~__type() {}
00766 # else
00767 # define __TRIVIAL_DESTRUCTOR(__type)
00768 # endif
00769
00770 # define __TRIVIAL_STUFF(__type) \
00771 __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type)
00772
00773 # if ! (defined ( _STLP_NO_EXCEPTIONS ) || defined (_STLP_HAS_NO_EXCEPTIONS) \
00774 || defined ( _STLP_USE_EXCEPTIONS ))
00775 # define _STLP_USE_EXCEPTIONS
00776 # endif
00777
00778 # ifdef _STLP_USE_EXCEPTIONS
00779 # define _STLP_TRY try
00780 # define _STLP_CATCH_ALL catch(...)
00781 # ifndef _STLP_THROW
00782 # define _STLP_THROW(x) throw x
00783 # endif
00784 # define _STLP_RETHROW throw
00785 # define _STLP_UNWIND(action) catch(...) { action; throw; }
00786
00787 # if !defined ( _STLP_NO_EXCEPTION_SPEC )
00788 # define _STLP_THROWS_INHERENTLY(x) throw x
00789 # define _STLP_NOTHROW_INHERENTLY throw()
00790 # else
00791 # define _STLP_THROWS_INHERENTLY(x)
00792 # define _STLP_NOTHROW_INHERENTLY
00793 # endif
00794
00795 # define _STLP_THROWS(x)
00796 # define _STLP_NOTHROW
00797 # else
00798 # define _STLP_TRY
00799 # define _STLP_CATCH_ALL if (false)
00800 # ifndef _STLP_THROW
00801 # define _STLP_THROW(x)
00802 # endif
00803 # define _STLP_RETHROW {}
00804 # define _STLP_UNWIND(action)
00805 # define _STLP_THROWS(x)
00806 # define _STLP_NOTHROW
00807 # define _STLP_THROWS_INHERENTLY(x)
00808 # define _STLP_NOTHROW_INHERENTLY
00809 # endif
00810
00811 #if defined(_STLP_NO_BOOL)
00812 # if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX)
00813 # include <isynonym.hpp>
00814 # if defined (__OS400__)
00815 typedef int bool;
00816 # elif !( defined (__xlC__) || defined (_AIX))
00817 typedef Boolean bool;
00818 # endif
00819 # else
00820 # if defined(_STLP_YVALS_H)
00821 # include <yvals.h>
00822 # else
00823 # if defined (_STLP_DONT_USE_BOOL_TYPEDEF)
00824 # define bool int
00825 # else
00826 typedef int bool;
00827 # endif
00828 # define true 1
00829 # define false 0
00830 # endif
00831 # endif
00832 #else
00833 # define _STLP_BOOL_KEYWORD 1
00834 #endif
00835
00836 # ifndef _STLP_MPW_EXTRA_CONST
00837 # define _STLP_MPW_EXTRA_CONST
00838 # endif
00839
00840 # ifndef _STLP_DEFAULTCHAR
00841 # define _STLP_DEFAULTCHAR char
00842 # endif
00843
00844 # if defined (_STLP_DEBUG_ALLOC) && ! defined (_STLP_ASSERTIONS)
00845 # define _STLP_ASSERTIONS 1
00846 # endif
00847
00848
00849 # ifndef _STLP_SHRED_BYTE
00850
00851 # define _STLP_SHRED_BYTE 0xA3
00852 # endif
00853
00854
00855 # ifndef _STLP_IMPORT_DECLSPEC
00856 # define _STLP_IMPORT_DECLSPEC
00857 # endif
00858
00859
00860 # ifndef _STLP_EXPORT_TEMPLATE_KEYWORD
00861 # define _STLP_EXPORT_TEMPLATE_KEYWORD
00862 # endif
00863 # ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
00864 # define _STLP_IMPORT_TEMPLATE_KEYWORD
00865 # endif
00866
00867
00868 # if defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC)
00869 # if ! defined (_STLP_USE_TEMPLATE_EXPORT)
00870
00871 # define _STLP_USE_TEMPLATE_EXPORT
00872 # endif
00873 # if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE)
00874 # define _STLP_NO_FORCE_INSTANTIATE
00875 # endif
00876 # endif
00877
00878 # if defined (_STLP_DESIGNATED_DLL)
00879 # define _STLP_EXPORT _STLP_EXPORT_TEMPLATE_KEYWORD
00880 # else
00881 # define _STLP_EXPORT _STLP_IMPORT_TEMPLATE_KEYWORD
00882 # endif
00883
00884 # ifndef _STLP_EXPORT_TEMPLATE
00885 # define _STLP_EXPORT_TEMPLATE _STLP_EXPORT template
00886 # endif
00887
00888 # if defined (_STLP_USE_DECLSPEC)
00889
00890 # ifndef _STLP_EXPORT_DECLSPEC
00891 # define _STLP_EXPORT_DECLSPEC
00892 # endif
00893 # ifndef _STLP_IMPORT_DECLSPEC
00894 # define _STLP_IMPORT_DECLSPEC
00895 # endif
00896 # ifndef _STLP_CLASS_EXPORT_DECLSPEC
00897 # define _STLP_CLASS_EXPORT_DECLSPEC
00898 # endif
00899 # ifndef _STLP_CLASS_IMPORT_DECLSPEC
00900 # define _STLP_CLASS_IMPORT_DECLSPEC
00901 # endif
00902 # if defined (_STLP_DESIGNATED_DLL)
00903 # define _STLP_DECLSPEC _STLP_EXPORT_DECLSPEC
00904 # define _STLP_CLASS_DECLSPEC _STLP_CLASS_EXPORT_DECLSPEC
00905 # else
00906 # define _STLP_DECLSPEC _STLP_IMPORT_DECLSPEC
00907 # define _STLP_CLASS_DECLSPEC _STLP_CLASS_IMPORT_DECLSPEC
00908 # endif
00909
00910 # ifndef _STLP_STATIC_CONST_INIT_BUG
00911
00912 # define _STLP_STATIC_CONST_INIT_BUG
00913 # endif
00914 # else
00915
00916 # define _STLP_DECLSPEC
00917 # define _STLP_CLASS_DECLSPEC
00918
00919 # endif
00920
00921 # define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
00922
00923 # if defined (_STLP_MSVC) || defined (__ICL)
00924 # define _STLP_STATIC_MEMBER_DECLSPEC
00925 # else
00926 # define _STLP_STATIC_MEMBER_DECLSPEC _STLP_DECLSPEC
00927 # endif
00928
00929 # if !defined (_STLP_CALL)
00930 # define _STLP_CALL
00931 # endif
00932
00933 #ifdef _STLP_OWN_IOSTREAMS
00934
00935 # if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM)
00936 # define __USE_STD_IOSTREAM
00937 # endif
00938
00939
00940
00941 # if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO)
00942 # define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1
00943 # endif
00944
00945
00946
00947 # if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE)
00948 # undef _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
00949 # define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1
00950 # endif
00951
00952 #else
00953
00954 # define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
00955 #endif
00956
00957 # ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
00958 # define _STLP_PSPEC2(t1,t2) < t1,t2 >
00959 # define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 >
00960 # else
00961 # define _STLP_PSPEC2(t1,t2)
00962 # define _STLP_PSPEC3(t1,t2,t3)
00963 # endif
00964
00965 # ifdef _STLP_OPERATOR_SPEC_NEEDS_TEMPLATE_ARGS
00966 # define _STLP_OPSPEC2(t1,t2) < t1,t2 >
00967 # else
00968 # define _STLP_OPSPEC2(t1,t2)
00969 # endif
00970
00971 # if defined (_STLP_OWN_IOSTREAMS)
00972 # define _STLP_NEW_IO_NAMESPACE _STLP_STD
00973 # define _STLP_NO_WIDE_STREAMS _STLP_NO_WCHAR_T
00974 # else
00975 # ifdef _STLP_USE_NEW_IOSTREAMS
00976 # define _STLP_NEW_IO_NAMESPACE _STLP_VENDOR_STD
00977 # ifdef _STLP_NO_NATIVE_WIDE_STREAMS
00978 # define _STLP_NO_WIDE_STREAMS _STLP_NO_NATIVE_WIDE_STREAMS
00979 # endif
00980 # else
00981 # define _STLP_NO_WIDE_STREAMS
00982 # define _STLP_NEW_IO_NAMESPACE
00983 # endif
00984 # endif
00985
00986 #ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
00987 # define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \
00988 _TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\
00989 _TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y) {return __y < __x;}\
00990 _TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\
00991 _TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);}
00992 # else
00993 # define _STLP_RELOPS_OPERATORS(_TMPL, _TP)
00994 # endif
00995
00996 # if defined ( _STLP_USE_ABBREVS )
00997 # include <stl/_abbrevs.h>
00998 # endif
00999
01000
01001 # undef _STLP_DONT_USE_BOOL_TYPEDEF
01002 # undef _STLP_YVALS_H
01003 # undef _STLP_LOOP_INLINE_PROBLEMS
01004 # undef _STLP_NEED_EXPLICIT
01005 # undef _STLP_NEED_TYPENAME
01006 # undef _STLP_NO_NEW_STYLE_CASTS
01007 # undef __AUTO_CONFIGURED
01008
01009 #endif
01010
01011
01012
01013
01014