ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

features.h
Go to the documentation of this file.
00001  /*
00002   *
00003   * Copyright (c) 1994
00004   * Hewlett-Packard Company
00005   *
00006   * Copyright (c) 1996,1997
00007   * Silicon Graphics Computer Systems, Inc.
00008   *
00009   * Copyright (c) 1997
00010   * Moscow Center for SPARC Technology
00011   *
00012   * Copyright (c) 1999
00013   * Boris Fomitchev
00014   *
00015   * This material is provided "as is", with absolutely no warranty expressed
00016   * or implied. Any use is at your own risk.
00017   *
00018   * Permission to use or copy this software for any purpose is hereby granted
00019   * without fee, provided the above notices are retained on all copies.
00020   * Permission to modify the code and to distribute modified code is granted,
00021   * provided the above notices are retained, and a notice that the code was
00022   * modified is included with the above copyright notice.
00023   *
00024   */
00025 
00026 #ifndef _STLP_FEATURES_H
00027 #define _STLP_FEATURES_H
00028 
00029 #ifndef RC_INVOKED
00030 
00031 /*
00032  * Purpose of this file:
00033  *
00034  * Defines all STLport settings.
00035  * This file is actually a wrapper : it includes compiler-specific
00036  * settings from <config/stlcomp.h>
00037  * and user-defined settings from <config/user_config.h>.
00038  * See <config/stl_mycomp.h> and <config/user_config.h> for the description
00039  * of those macros
00040  *
00041  */
00042 
00043 /* Definition of the STLport version informations */
00044 #include <stl/_stlport_version.h>
00045 
00046 /* Other macros defined by this file:
00047 
00048  * bool, true, and false, if _STLP_NO_BOOL is defined.
00049  * typename, as a null macro if it's not already a keyword.
00050  * explicit, as a null macro if it's not already a keyword.
00051  * namespace-related macros (_STLP_STD, _STLP_BEGIN_NAMESPACE, etc.)
00052  * exception-related macros (_STLP_TRY, _STLP_UNWIND, etc.)
00053  * _STLP_ASSERT, either as a test or as a null macro, depending on
00054    whether or not _STLP_ASSERTIONS is defined.
00055 */
00056 
00057 /* Definition of the 2 STLport debug levels */
00058 #define _STLP_STLPORT_DBG_LEVEL 1
00059 #define _STLP_STANDARD_DBG_LEVEL 2
00060 
00061 /* Placeholder for user to override settings.
00062  * It could be also used to mask settings from
00063  * different directories.
00064  */
00065 #include <stl/config/user_config.h>
00066 
00067 #if defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_LEVEL)
00068 #  define _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL
00069 #endif
00070 
00071 #if defined (__BUILDING_STLPORT)
00072 /* For the STLport implementation we can use everything:
00073  */
00074 #  if defined (_STLP_NO_ANACHRONISMS)
00075 #    undef _STLP_NO_ANACHRONISMS
00076 #  endif
00077 #  if defined (_STLP_NO_EXTENSIONS)
00078 #    undef _STLP_NO_EXTENSIONS
00079 #  endif
00080 /* Moreover there are things that have no sens:
00081  */
00082 #  if defined (_STLP_NO_IOSTREAMS)
00083 #    error If you do not use iostreams you do not need to build the STLport library.
00084 #  endif
00085 #endif
00086 
00087 /* ========================================================= */
00088 /* This file is used for compatibility; it accepts old-style config
00089    switches */
00090 #include <stl/config/compat.h>
00091 
00092 /* Common configuration file for this particular installation. */
00093 #include <stl/config/host.h>
00094 
00095 /* Operational Environment specific */
00096 #include <stl/config/_system.h>
00097 
00098 /* ========================================================= */
00099 
00100 /* some fixes to configuration. This also includes modifications
00101  * of STLport switches depending on compiler flags,
00102  * or settings applicable to a group of compilers, such as
00103  * to all who use EDG front-end.
00104  */
00105 #include <stl/config/stl_confix.h>
00106 
00107 #if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES)
00108 #  define _STLP_MEMBER_TEMPLATES 1
00109 #endif
00110 
00111 #if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
00112 #  define _STLP_MEMBER_TEMPLATE_CLASSES 1
00113 #endif
00114 
00115 #if defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
00116 #  define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
00117 #endif
00118 
00119 #if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
00120 #  define _STLP_CLASS_PARTIAL_SPECIALIZATION 1
00121 #endif
00122 
00123 #if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
00124 #  define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1
00125 #endif
00126 
00127 #if !defined (_STLP_DONT_USE_SHORT_STRING_OPTIM) && !defined (_STLP_USE_SHORT_STRING_OPTIM)
00128 #  define _STLP_USE_SHORT_STRING_OPTIM 1
00129 #endif
00130 
00131 #if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXTENSIONS) && \
00132    !defined (_STLP_NO_CONTAINERS_EXTENSION) && !defined (_STLP_USE_CONTAINERS_EXTENSION)
00133 #  define _STLP_USE_CONTAINERS_EXTENSION
00134 #endif
00135 
00136 #if defined (_STLP_USE_CONTAINERS_EXTENSION)
00137 #  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
00138 #else
00139 #  define _STLP_TEMPLATE_FOR_CONT_EXT
00140 #endif
00141 
00142 #if defined (_STLP_USE_PTR_SPECIALIZATIONS) && \
00143     (defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
00144 #  error Sorry but according the STLport settings your compiler can not support the pointer specialization feature.
00145 #endif
00146 
00147 #if defined (_STLP_WHOLE_NATIVE_STD) && defined (_STLP_NO_OWN_NAMESPACE)
00148 #  error Sorry but asking for both STLport to be in the real std namespace and also having STLport import all native std stuff \
00149   is invalid, chose one or none.
00150 #endif
00151 
00152 #if defined (_STLP_VERBOSE) && !defined (_STLP_VERBOSE_MODE_SUPPORTED)
00153 #  error Sorry but the verbose mode is not implemented for your compiler.
00154 #endif
00155 
00156 #if defined (_STLP_NO_IOSTREAMS) && \
00157    !defined (_STLP_USE_NEWALLOC) && !defined (_STLP_USE_MALLOC)
00158 #  define _STLP_USE_NEWALLOC
00159 #endif
00160 
00161 #if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN)
00162 #  if defined (_MIPSEB) || defined (__sparc) || defined (_AIX) || \
00163       defined (__hpux) || defined (macintosh) || defined (_MAC)
00164 #    define _STLP_BIG_ENDIAN 1
00165 #  elif defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
00166         defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
00167         defined (__alpha__)
00168 #    define _STLP_LITTLE_ENDIAN 1
00169 #  elif defined (__ia64__)
00170     /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
00171 #    if defined (__BIG_ENDIAN__)
00172 #      define _STLP_BIG_ENDIAN 1
00173 #    else
00174 #      define _STLP_LITTLE_ENDIAN 1
00175 #    endif
00176 #  else
00177 #    error "can't determine endianess"
00178 #  endif
00179 #endif /* _STLP_BIG_ENDIAN */
00180 
00181 /* ==========================================================
00182  * final workaround tuning based on given flags
00183  * ========================================================== */
00184 
00185 #ifndef _STLP_UINT32_T
00186 #  define _STLP_UINT32_T unsigned long
00187 #endif
00188 #ifndef _STLP_ABORT
00189 #  define _STLP_ABORT() abort()
00190 #endif
00191 
00192 #if !defined (_STLP_HAS_NO_NAMESPACES)
00193 #  if defined _STLP_NO_NAMESPACES
00194 #    undef _STLP_USE_NAMESPACES
00195 #  else
00196 /* assume it as the default, turn it off later if NO_NAMESPACES selected */
00197 #    undef _STLP_USE_NAMESPACES
00198 #    define _STLP_USE_NAMESPACES 1
00199 #  endif
00200 #endif
00201 
00202 #if defined (_STLP_NO_IOSTREAMS)
00203 #  define _STLP_USE_NO_IOSTREAMS
00204 #endif
00205 
00206 /* Operating system recognition (basic) */
00207 #if (defined(__unix) || defined(__linux__) || defined(__QNX__) || defined(_AIX)  || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__Lynx__) || defined(__hpux) || defined(__sgi)) && \
00208      !defined (_STLP_UNIX)
00209 #  define _STLP_UNIX 1
00210 #endif /* __unix */
00211 
00212 #if !defined (_STLP_NO_LONG_DOUBLE)
00213 #  define _STLP_LONGEST_FLOAT_TYPE long double
00214 #else
00215 #  define _STLP_LONGEST_FLOAT_TYPE double
00216 #endif
00217 
00218 /* Native headers access macros */
00219 #if !defined (_STLP_HAS_INCLUDE_NEXT)
00220 #  include <stl/config/_native_headers.h>
00221 #endif
00222 
00223 /*  shared library tune-up */
00224 
00225 #if defined (__BUILDING_STLPORT)
00226 /*  if we are rebuilding right now, place everything here */
00227 #  undef  _STLP_DESIGNATED_DLL
00228 #  define _STLP_DESIGNATED_DLL 1
00229 #endif
00230 
00231 /* Use own namespace always if possible and not explicitly instructed otherwise */
00232 #if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \
00233    !defined (_STLP_NO_OWN_NAMESPACE)
00234 #  undef  _STLP_USE_OWN_NAMESPACE
00235 #  define _STLP_USE_OWN_NAMESPACE  1
00236 #else
00237 #  undef _STLP_WHOLE_NATIVE_STD
00238 #endif
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 (_STLP_WIN32) && !defined (_STLP_PTHREADS)
00252 #    define _STLP_WIN32THREADS 1
00253 #  elif ((defined (__sun) && !defined (__linux__)) || defined (_UITHREADS) ) && \
00254         !defined(_STLP_PTHREADS)
00255 #    define _STLP_UITHREADS
00256 #  else
00257 #    define _STLP_PTHREADS
00258 #  endif /* __sgi */
00259 #  define _STLP_THREADS_DEFINED
00260 #endif
00261 
00262 #if (defined (_REENTRANT) || defined (_THREAD_SAFE)) && !defined (_STLP_THREADS)
00263 #  define _STLP_THREADS
00264 #endif
00265 
00266 #ifndef _STLP_STATIC_MUTEX
00267 #  define _STLP_STATIC_MUTEX _STLP_mutex_base
00268 #endif
00269 
00270 #if (defined (_MFC_VER) || defined (_AFXDLL)) && !defined (_STLP_USE_MFC)
00271 #  define _STLP_USE_MFC 1
00272 #endif
00273 
00274 #if defined (_STLP_THREADS)
00275 #  define _STLP_VOLATILE volatile
00276 #else
00277 #  define _STLP_VOLATILE
00278 #endif
00279 
00280 #if !defined (_STLP_USE_NEW_C_HEADERS) && !defined (_STLP_HAS_NO_NEW_C_HEADERS)
00281 #  define _STLP_USE_NEW_C_HEADERS
00282 #endif
00283 /* disable new-style headers if requested */
00284 #if defined (_STLP_NO_NEW_C_HEADERS)
00285 #  undef _STLP_USE_NEW_C_HEADERS
00286 #endif
00287 
00288 #if defined (_STLP_BASE_TYPEDEF_BUG)
00289 #  undef  _STLP_BASE_TYPEDEF_OUTSIDE_BUG
00290 #  define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
00291 #endif
00292 
00293 #if defined (_STLP_NESTED_TYPE_PARAM_BUG)
00294 #  define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG
00295 #endif
00296 
00297 /* SUNpro 4.2 inline string literal bug */
00298 #ifdef _STLP_INLINE_STRING_LITERAL_BUG
00299 #  define _STLP_FIX_LITERAL_BUG(__x) __x = __x;
00300 #else
00301 #  define _STLP_FIX_LITERAL_BUG(__x)
00302 #endif
00303 
00304 #if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
00305 #  undef  _STLP_NO_DEFAULT_NON_TYPE_PARAM
00306 #  define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
00307 #endif
00308 
00309 #if !defined (_STLP_STATIC_ASSERT)
00310 /* Some compiler support 0 size array so we use negative size array to generate
00311  * a compilation time error.
00312  */
00313 #  define _STLP_STATIC_ASSERT(expr) typedef char __static_assert[expr ? 1 : -1];
00314 #endif
00315 
00316 /* apple mpw exception handling bug */
00317 #ifndef _STLP_MPWFIX_TRY
00318 #  define _STLP_MPWFIX_TRY
00319 #endif
00320 #ifndef _STLP_MPWFIX_CATCH
00321 #  define _STLP_MPWFIX_CATCH
00322 #endif
00323 #ifndef _STLP_MPWFIX_CATCH_ACTION
00324 #  define _STLP_MPWFIX_CATCH_ACTION(action)
00325 #endif
00326 
00327 #if !defined (_STLP_WEAK)
00328 #  define _STLP_WEAK
00329 #endif
00330 
00331 /* default parameters as template types derived from arguments ( not always supported ) */
00332 #if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
00333 #  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname
00334 #else
00335 #  if !defined (_STLP_DEFAULT_TYPE_PARAM)
00336 #    define _STLP_DEFAULT_TYPE_PARAM 1
00337 #  endif
00338 #  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname = defval
00339 #endif
00340 
00341 #if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
00342 #  define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc
00343 #else
00344 #  define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \
00345             class _Alloc = allocator< pair < _Key, _Tp > >
00346 #endif
00347 
00348 /* default parameters as complete types */
00349 #if defined (_STLP_DEFAULT_TYPE_PARAM)
00350 #  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname = defval
00351 #  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name = val
00352 #else
00353 #  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname
00354 #  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name
00355 #endif
00356 
00357 /* SGI compatibility */
00358 
00359 #ifdef _STLP_NO_WCHAR_T
00360 #  ifndef _STLP_NO_NATIVE_WIDE_STREAMS
00361 #    define  _STLP_NO_NATIVE_WIDE_STREAMS 1
00362 #  endif
00363 #else
00364 #  define _STLP_HAS_WCHAR_T 1
00365 #endif
00366 
00367 #if !defined (_STLP_NO_AT_MEMBER_FUNCTION)
00368 #  define _STLP_CAN_THROW_RANGE_ERRORS 1
00369 #endif
00370 
00371 /* debug mode tool */
00372 #if defined (_STLP_DEBUG)
00373 #  define _STLP_NON_DBG_NAME(X) _NonDbg_##X
00374 #endif
00375 
00376 /* pointer specialization tool */
00377 #if defined (_STLP_USE_PTR_SPECIALIZATIONS)
00378 #  define _STLP_PTR_IMPL_NAME(X) _Impl_##X
00379 #endif
00380 
00381 #if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \
00382     defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY)
00383 #  define _STLP_NO_MEM_T_NAME(X) _NoMemT_##X
00384 #endif
00385 
00386 /* this always mean the C library is in global namespace */
00387 #if defined (_STLP_HAS_NO_NEW_C_HEADERS) && !defined (_STLP_VENDOR_GLOBAL_CSTD)
00388 #  define _STLP_VENDOR_GLOBAL_CSTD 1
00389 #endif
00390 
00391 /* Depending of whether compiler supports namespaces,
00392  * tune the parameters for vendor-supplied libraries.
00393  * This section is guarded by _STLP_HAS_NO_NAMESPACES, not by _STLP_USE_NAMESPACES,
00394  * since it depends only on the native features, not on user's preference whether
00395  * to use namespace for STLport or not.
00396  */
00397 #if !defined (_STLP_HAS_NO_NAMESPACES)
00398 /* Import some vendor's headers into corresponding STLport ones if they might be needed
00399  * (if we wrap native iostreams and use namepace other than std::) */
00400 #  if defined (_STLP_WHOLE_NATIVE_STD)
00401 #    define  _STLP_IMPORT_VENDOR_STD 1
00402 #  endif
00403 
00404 /* if using stlport:: namespace or if C library stuff is not in vendor's std::,
00405  * try importing 'em.
00406  * MSVC has ambiguity problem when we try to import C-style std:: stuff back into global namespace */
00407 #  if defined (_STLP_USE_NAMESPACES) && (defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD))
00408 #    define  _STLP_IMPORT_VENDOR_CSTD 1
00409 #  endif
00410 
00411 #  if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && !defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS)
00412 #    define _STLP_NO_CSTD_FUNCTION_IMPORTS
00413 #  endif
00414 
00415 #  define _STLP_USING_NAMESPACE(x) using namespace x ;
00416 
00417 namespace std { }
00418 namespace __std_alias = std;
00419 
00420 /* assume std:: namespace for C++ std library if not being told otherwise */
00421 #  if defined (_STLP_VENDOR_GLOBAL_STD)
00422 #    define _STLP_VENDOR_STD
00423 #  else
00424 #    define _STLP_VENDOR_STD std
00425 #  endif
00426 
00427 /* tune things that come from C library */
00428 #  if  defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS)
00429 /*  in old-style headers, C functions go to global scope. */
00430 #    define _STLP_VENDOR_CSTD
00431 #    define _STLP_USING_VENDOR_CSTD
00432 #  else
00433 #    define _STLP_VENDOR_CSTD  _STLP_VENDOR_STD
00434 #    define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD)
00435 #  endif /* _STLP_VENDOR_CSTD */
00436 /* exception, typeinfo, new - always come from the vendor */
00437 #  if !defined (_STLP_VENDOR_EXCEPT_STD)
00438 #    if defined (_STLP_VENDOR_GLOBAL_EXCEPT_STD)
00439 #      define _STLP_VENDOR_EXCEPT_STD
00440 #    else
00441 #      define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD
00442 #    endif
00443 #  endif
00444 #  define _STLP_OLD_IO_NAMESPACE
00445 #  if !defined (_STLP_VENDOR_MB_NAMESPACE)
00446 #    define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD
00447 #  endif
00448 #else
00449 /* compiler has no namespace support */
00450 #  define _STLP_VENDOR_STD
00451 #  define _STLP_VENDOR_CSTD
00452 #  define _STLP_USING_NAMESPACE(x)
00453 #  define _STLP_USING_VENDOR_CSTD
00454 #  define _STLP_VENDOR_EXCEPT_STD
00455 #endif
00456 
00457 #if defined (_STLP_USE_NAMESPACES)
00458 
00459 #  if defined (_STLP_USE_OWN_NAMESPACE)
00460 #    if !defined (_STLP_STD_NAME)
00461 #      if !defined (_STLP_DEBUG)
00462 #        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
00463 #          ifndef _STLP_THREADS
00464 #            define _STLP_STD_NAME  stlpmtx_std
00465 #          else
00466 #            define _STLP_STD_NAME  stlp_std
00467 #          endif
00468 #        else
00469 #          ifndef _STLP_THREADS
00470 #            define _STLP_STD_NAME  stlpxmtx_std
00471 #          else
00472 #            define _STLP_STD_NAME  stlpx_std
00473 #          endif
00474 #        endif
00475 #      else
00476 /*
00477  * The STLport debug mode is binary incompatible with the other modes,
00478  * lets make it clear on the STLport namespace to generate link errors rather
00479  * than runtime ones.
00480  */
00481 #        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
00482 #          ifndef _STLP_THREADS
00483 #            define _STLP_STD_NAME  stlpdmtx_std
00484 #          else
00485 #            define _STLP_STD_NAME  stlpd_std
00486 #          endif
00487 #        else
00488 #          ifndef _STLP_THREADS
00489 #            define _STLP_STD_NAME  stlpdxmtx_std
00490 #          else
00491 #            define _STLP_STD_NAME  stlpdx_std
00492 #          endif
00493 #        endif
00494 #      endif
00495 #    endif
00496 namespace _STLP_STD_NAME { }
00497 #  else
00498 #    define _STLP_STD_NAME std
00499 #  endif /* _STLP_USE_OWN_NAMESPACE */
00500 
00501 #  define _STLP_BEGIN_NAMESPACE namespace _STLP_STD_NAME {
00502 #  define _STLP_BEGIN_TR1_NAMESPACE namespace tr1 {
00503 #  define _STLP_END_NAMESPACE }
00504 
00505 /* decide whether or not we use separate namespace for rel ops */
00506 #  if defined (_STLP_NO_RELOPS_NAMESPACE)
00507 #    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {}
00508 #    define _STLP_END_RELOPS_NAMESPACE }
00509 #  else
00510 /* Use std::rel_ops namespace */
00511 #    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {
00512 #    define _STLP_END_RELOPS_NAMESPACE } }
00513 #    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
00514 #  endif /* Use std::rel_ops namespace */
00515 
00516 #  define _STLP_STD ::_STLP_STD_NAME
00517 #  if !defined (_STLP_TR1)
00518 #    define _STLP_TR1 _STLP_STD::tr1::
00519 #  endif
00520 
00521 #  if !defined (_STLP_DONT_USE_PRIV_NAMESPACE)
00522 #    define _STLP_PRIV_NAME priv
00523 #    define _STLP_PRIV _STLP_STD::_STLP_PRIV_NAME::
00524 #    define _STLP_MOVE_TO_PRIV_NAMESPACE namespace _STLP_PRIV_NAME {
00525 #    define _STLP_MOVE_TO_STD_NAMESPACE }
00526 #  else
00527 #      if !defined (_STLP_PRIV)
00528 #        define _STLP_PRIV _STLP_STD::
00529 #      endif
00530 #    define _STLP_MOVE_TO_PRIV_NAMESPACE
00531 #    define _STLP_MOVE_TO_STD_NAMESPACE
00532 #  endif
00533 
00534 /* Official STLport namespace when std is not redefined.
00535  * Here we don't use a macro because we do not need it and because
00536  * stlport is used as file name by boost and folder name under beos:
00537  */
00538 namespace stlport = _STLP_STD_NAME;
00539 
00540 /* Backward compatibility:
00541  */
00542 namespace _STL = _STLP_STD_NAME;
00543 #undef __STLPORT_NAMESPACE
00544 #define __STLPORT_NAMESPACE _STLP_STD_NAME
00545 
00546 #else /* _STLP_USE_NAMESPACES */
00547 /* STLport is being put into global namespace */
00548 #  define _STLP_STD
00549 #  define _STLP_PRIV
00550 #  define _STLP_TR1
00551 #  define _STLP_BEGIN_NAMESPACE
00552 #  define _STLP_BEGIN_TR1_NAMESPACE
00553 #  define _STLP_END_NAMESPACE
00554 #  define _STLP_MOVE_TO_PRIV_NAMESPACE
00555 #  define _STLP_MOVE_TO_STD_NAMESPACE
00556 
00557 /* boris : it was found out that _STLP_USE_SEPARATE_RELOPS_NAMESPACE
00558    causes less problems than having relational operator templates in global namespace
00559    Please define _STLP_NO_RELOPS_NAMESPACE in config/user_config.h if your code rely on them. */
00560 #  if !defined (_STLP_NO_RELOPS_NAMESPACE)
00561 #    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
00562 #  endif
00563 #  define _STLP_BEGIN_RELOPS_NAMESPACE
00564 #  define _STLP_END_RELOPS_NAMESPACE
00565 #  undef  _STLP_USE_OWN_NAMESPACE
00566 #endif  /* _STLP_USE_NAMESPACES */
00567 
00568 #define STLPORT_CSTD _STLP_VENDOR_CSTD
00569 #define STLPORT      _STLP_STD_NAME
00570 
00571 #if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG)
00572 #  define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy<T>
00573 #else
00574 #  define _STLP_SIMPLE_TYPE(T) T
00575 #endif
00576 
00577 #ifndef _STLP_RAND48
00578 #  define _STLP_NO_DRAND48
00579 #endif
00580 
00581 /* advanced keywords usage */
00582 #define __C_CAST(__x, __y) ((__x)(__y))
00583 #ifndef  _STLP_NO_NEW_STYLE_CASTS
00584 #  define __CONST_CAST(__x,__y) const_cast<__x>(__y)
00585 #  define __STATIC_CAST(__x,__y) static_cast<__x>(__y)
00586 #  define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y)
00587 #else
00588 #  define __STATIC_CAST(__x,__y) __C_CAST(__x, __y)
00589 #  define __CONST_CAST(__x,__y) __C_CAST(__x, __y)
00590 #  define __REINTERPRET_CAST(__x,__y) __C_CAST(__x, __y)
00591 #endif
00592 
00593 #if defined (_STLP_NEED_TYPENAME) && ! defined (typename)
00594 #  define typename
00595 #endif
00596 
00597 #if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE )
00598 #  define _STLP_TYPENAME_ON_RETURN_TYPE
00599 #else
00600 #  define _STLP_TYPENAME_ON_RETURN_TYPE typename
00601 #endif
00602 
00603 #ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
00604 #  define _STLP_HEADER_TYPENAME
00605 #else
00606 #  define _STLP_HEADER_TYPENAME typename
00607 #endif
00608 
00609 #ifdef _STLP_NO_TYPENAME_BEFORE_NAMESPACE
00610 #  define _STLP_TYPENAME
00611 #else
00612 #  define _STLP_TYPENAME typename
00613 #endif
00614 
00615 #ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD
00616 #  define _STLP_TEMPLATE template
00617 #else
00618 #  define _STLP_TEMPLATE
00619 #endif
00620 
00621 #if defined (_STLP_USE_CONTAINERS_EXTENSION)
00622 #  define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
00623 #  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
00624 #else
00625 #  define _STLP_KEY_TYPE_FOR_CONT_EXT(type) typedef type _KT;
00626 #  define _STLP_TEMPLATE_FOR_CONT_EXT
00627 #endif
00628 
00629 #if defined (_STLP_NEED_EXPLICIT) && !defined (explicit)
00630 #  define explicit
00631 #endif
00632 
00633 #if !defined (_STLP_NEED_MUTABLE)
00634 #  define _STLP_MUTABLE(type, x) x
00635 #else
00636 #  define _STLP_MUTABLE(type, x) __CONST_CAST(type*, this)->x
00637 #  define mutable
00638 #endif
00639 
00640 #if defined (_STLP_NO_SIGNED_BUILTINS)
00641 /* old HP-UX doesn't understand "signed" keyword */
00642 #  define signed
00643 #endif
00644 
00645 #if defined (_STLP_LOOP_INLINE_PROBLEMS)
00646 #  define _STLP_INLINE_LOOP
00647 #else
00648 #  define _STLP_INLINE_LOOP inline
00649 #endif
00650 
00651 #ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
00652 #  define _STLP_TEMPLATE_NULL template<>
00653 #else
00654 #  define _STLP_TEMPLATE_NULL
00655 #endif
00656 
00657 #ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
00658 #  define _STLP_OPERATOR_TEMPLATE
00659 #else
00660 #  define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL
00661 #endif
00662 
00663 #ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION
00664 /* unless we have other compiler problem, try simulating partial spec here */
00665 #  if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
00666 #    define _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
00667 #  endif
00668 /* For your own iterators, please use inheritance from iterator<> instead of these obsolete queries. */
00669 #  if  (defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
00670 #    if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES )
00671 #      define _STLP_USE_OLD_HP_ITERATOR_QUERIES
00672 #    endif
00673 #  elif defined ( _STLP_NO_ANACHRONISMS )
00674 #    undef _STLP_USE_OLD_HP_ITERATOR_QUERIES
00675 #  endif
00676 #endif
00677 
00678 #ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
00679 #  define _STLP_NULL_TMPL_ARGS <>
00680 # else
00681 #  define _STLP_NULL_TMPL_ARGS
00682 #endif
00683 
00684 #if !defined (_STLP_ALLOCATOR_TYPE_DFL)
00685 #  if defined (_STLP_DONT_SUP_DFLT_PARAM)
00686 #    define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
00687 #  endif
00688 #  if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
00689 #    define _STLP_ALLOCATOR_TYPE_DFL
00690 #  else
00691 #    define _STLP_ALLOCATOR_TYPE_DFL = allocator_type()
00692 #  endif
00693 #endif
00694 
00695 /* When the compiler do not correctly initialized the basic types value in default parameters we prefer
00696  * to avoid them to be able to correct this bug.
00697  */
00698 #if defined (_STLP_DEF_CONST_DEF_PARAM_BUG)
00699 #  define _STLP_DONT_SUP_DFLT_PARAM 1
00700 #endif
00701 
00702 #if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR)
00703 #  define _STLP_NO_ARROW_OPERATOR
00704 #endif
00705 
00706 #if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
00707 #  if !(defined (_STLP_NO_ARROW_OPERATOR)) && \
00708        !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY)
00709 /* this one is needed for proper reverse_iterator<> operator ->() handling */
00710 #    define _STLP_MSVC50_COMPATIBILITY 1
00711 #  endif
00712 #endif
00713 
00714 #if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
00715 #  if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) )
00716 #    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00717    typedef typename _STLP_STD :: reverse_iterator<const_iterator> const_reverse_iterator; \
00718    typedef typename _STLP_STD :: reverse_iterator<iterator> reverse_iterator
00719 #  elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__)
00720 #    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00721    typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<const_iterator> const_reverse_iterator; \
00722    typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<iterator> reverse_iterator
00723 #  else
00724 #    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00725    typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator; \
00726    typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator
00727 #  endif
00728 #else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
00729 #  if defined (_STLP_MSVC50_COMPATIBILITY)
00730 #    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00731   typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
00732     const_pointer, difference_type>  const_reverse_iterator; \
00733   typedef _STLP_STD::__reverse_iterator<iterator, value_type, reference, pointer, difference_type> \
00734     reverse_iterator
00735 #  else
00736 #    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
00737   typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
00738     difference_type>  const_reverse_iterator; \
00739   typedef _STLP_STD::__reverse_iterator<iterator, value_type, \
00740     reference, difference_type> \
00741     reverse_iterator
00742 #  endif
00743 #endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
00744 
00745 #define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \
00746         _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator)
00747 #define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \
00748         _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator)
00749 
00750 #define __IMPORT_CONTAINER_TYPEDEFS(_Super)                              \
00751     typedef typename _Super::value_type value_type;                      \
00752     typedef typename _Super::size_type size_type;                        \
00753     typedef typename _Super::difference_type difference_type;            \
00754     typedef typename _Super::reference reference;                        \
00755     typedef typename _Super::const_reference const_reference;            \
00756     typedef typename _Super::pointer pointer;                            \
00757     typedef typename _Super::const_pointer const_pointer;                \
00758     typedef typename _Super::allocator_type allocator_type;
00759 
00760 
00761 #define __IMPORT_ITERATORS(_Super)                                       \
00762     typedef typename _Super::iterator iterator;                          \
00763     typedef typename _Super::const_iterator const_iterator;
00764 
00765 #define __IMPORT_REVERSE_ITERATORS(_Super)                                   \
00766     typedef typename _Super::const_reverse_iterator  const_reverse_iterator; \
00767     typedef typename _Super::reverse_iterator reverse_iterator;
00768 
00769 #define  __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER)       \
00770     __derived_name(const _Super& __x) : _SUPER(__x) {}                       \
00771     _Self& operator=(const _Super& __x) {                                    \
00772         *(_Super*)this = __x;                                                \
00773         return *this;                                                        \
00774     }                                                                        \
00775     __derived_name(const _Self& __x) : _SUPER(__x) {}                        \
00776     _Self& operator=(const _Self& __x) {                                     \
00777         *(_Super*)this = __x;                                                \
00778         return *this;                                                        \
00779     }
00780 
00781 #define __IMPORT_WITH_ITERATORS(_Super) \
00782   __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super)
00783 
00784 #define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \
00785   __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super)
00786 
00787 #if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG)
00788 #  define __TRIVIAL_CONSTRUCTOR(__type) __type() {}
00789 #else
00790 #  define __TRIVIAL_CONSTRUCTOR(__type)
00791 #endif
00792 
00793 #if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG)
00794 #  define __TRIVIAL_DESTRUCTOR(__type) ~__type() {}
00795 #else
00796 #  define __TRIVIAL_DESTRUCTOR(__type)
00797 #endif
00798 
00799 #define __TRIVIAL_STUFF(__type)  \
00800   __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type)
00801 
00802 #if defined (_STLP_STATIC_CONST_INIT_BUG)
00803 #  define _STLP_STATIC_CONSTANT(__type, __assignment) enum { __assignment }
00804 #else
00805 #  define _STLP_STATIC_CONSTANT(__type, __assignment) static const __type __assignment
00806 #endif
00807 
00808 #if defined (_STLP_HAS_NO_EXCEPTIONS)
00809 #  define _STLP_NO_EXCEPTIONS
00810 #endif
00811 
00812 #if !defined (_STLP_DONT_USE_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_USE_EXCEPTIONS)
00813 #  define _STLP_USE_EXCEPTIONS
00814 #endif
00815 
00816 #if defined (_STLP_USE_EXCEPTIONS)
00817 #  define _STLP_TRY try
00818 #  define _STLP_CATCH_ALL catch(...)
00819 #  ifndef _STLP_THROW
00820 #    define _STLP_THROW(x) throw x
00821 #  endif
00822 #  define _STLP_RETHROW throw
00823 
00824 #  define _STLP_UNWIND(action) catch(...) { action; throw; }
00825 
00826 #  ifdef _STLP_THROW_RETURN_BUG
00827 #    define _STLP_RET_AFTER_THROW(data) return data;
00828 #  else
00829 #    define _STLP_RET_AFTER_THROW(data)
00830 #  endif
00831 
00832 #  if !defined (_STLP_THROWS)
00833 #    define _STLP_THROWS(x) throw(x)
00834 #  endif
00835 #  if !defined (_STLP_NOTHROW)
00836 #    define _STLP_NOTHROW throw()
00837 #  endif
00838 #else
00839 #  define _STLP_TRY
00840 #  define _STLP_CATCH_ALL if (false)
00841 #  ifndef _STLP_THROW
00842 #    define _STLP_THROW(x)
00843 #  endif
00844 #  define _STLP_RETHROW {}
00845 #  define _STLP_UNWIND(action)
00846 #  define _STLP_THROWS(x)
00847 #  define _STLP_NOTHROW
00848 #  define _STLP_RET_AFTER_THROW(data)
00849 #endif
00850 
00851 /*
00852  * Here we check _STLP_NO_EXCEPTIONS which means that the compiler has no
00853  * exception support but not the _STLP_USE_EXCEPTIONS which simply means
00854  * that the user do not want to use them.
00855  */
00856 #if !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTION_SPEC)
00857 #  define _STLP_THROWS_INHERENTLY(x) throw x
00858 #  define _STLP_NOTHROW_INHERENTLY throw()
00859 #else
00860 #  define _STLP_THROWS_INHERENTLY(x)
00861 #  define _STLP_NOTHROW_INHERENTLY
00862 #endif
00863 
00864 /* STLport function not returning are functions that throw so we translate
00865  * the noreturn functions in throwing functions taking also into account
00866  * exception support activation.
00867  */
00868 #if defined (_STLP_NORETURN_FUNCTION) && !defined (_STLP_NO_EXCEPTIONS) && \
00869    !defined (_STLP_FUNCTION_THROWS)
00870 #  define _STLP_FUNCTION_THROWS _STLP_NORETURN_FUNCTION
00871 #else
00872 #  define _STLP_FUNCTION_THROWS
00873 #endif
00874 
00875 #if defined(_STLP_NO_BOOL)
00876 #  if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX)
00877 #    include <isynonym.hpp>
00878 #    if defined (__OS400__)
00879 typedef int bool;
00880 #    elif !( defined (__xlC__) || defined (_AIX))
00881 typedef Boolean bool;
00882 #    endif
00883 #  else
00884 #    if defined(_STLP_YVALS_H)
00885 #      include <yvals.h>
00886 #    else
00887 #      if defined (_STLP_DONT_USE_BOOL_TYPEDEF)
00888 #        define bool int
00889 #      else
00890 typedef int bool;
00891 #      endif
00892 #      define true 1
00893 #      define false 0
00894 #    endif
00895 #  endif /* __IBMCPP__ */
00896 #else
00897 #  define _STLP_BOOL_KEYWORD 1
00898 #endif /* _STLP_NO_BOOL */
00899 
00900 /* uninitialized value filler */
00901 #ifndef _STLP_SHRED_BYTE
00902 /* This value is designed to cause problems if an error occurs */
00903 #  define _STLP_SHRED_BYTE 0xA3
00904 #endif /* _STLP_SHRED_BYTE */
00905 
00906 /* shared library tune-up */
00907 #ifndef _STLP_IMPORT_DECLSPEC
00908 #  define _STLP_IMPORT_DECLSPEC
00909 #endif
00910 
00911 /* a keyword used to instantiate export template */
00912 #ifndef _STLP_EXPORT_TEMPLATE_KEYWORD
00913 #  define _STLP_EXPORT_TEMPLATE_KEYWORD
00914 #endif
00915 #ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
00916 #  define _STLP_IMPORT_TEMPLATE_KEYWORD
00917 #endif
00918 
00919 #if !defined (_STLP_NO_CONST_IN_PAIR)
00920 #  define _STLP_CONST const
00921 #else
00922 #  define _STLP_CONST
00923 #endif
00924 
00925 #ifdef _STLP_USE_NO_IOSTREAMS
00926 /*
00927  * If we do not use iostreams we do not use the export/import
00928  * techniques to avoid build of the STLport library.
00929  */
00930 #  undef _STLP_USE_DECLSPEC
00931 /* We also undef USE_DYNAMIC_LIB macro as this macro add some code
00932  * to use the dynamic (shared) STLport library for some platform/compiler
00933  * configuration leading to problem when not linking to the STLport lib.
00934  */
00935 #  undef _STLP_USE_DYNAMIC_LIB
00936 #endif
00937 
00938 #if  defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC)
00939 #  if ! defined (_STLP_USE_TEMPLATE_EXPORT)
00940 /* this setting turns on "extern template" extension use */
00941 #    define _STLP_USE_TEMPLATE_EXPORT
00942 #  endif
00943 #  if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE)
00944 #    define _STLP_NO_FORCE_INSTANTIATE
00945 #  endif
00946 #endif
00947 
00948 #if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
00949 #  define  _STLP_EXPORT _STLP_EXPORT_TEMPLATE_KEYWORD
00950 #else
00951 #  define  _STLP_EXPORT _STLP_IMPORT_TEMPLATE_KEYWORD
00952 #endif
00953 
00954 #ifndef _STLP_EXPORT_TEMPLATE
00955 #  define  _STLP_EXPORT_TEMPLATE _STLP_EXPORT template
00956 #endif
00957 
00958 #if defined (_STLP_USE_DECLSPEC) /* using export/import technique */
00959 
00960 #  ifndef _STLP_EXPORT_DECLSPEC
00961 #    define _STLP_EXPORT_DECLSPEC
00962 #  endif
00963 #  ifndef _STLP_IMPORT_DECLSPEC
00964 #    define _STLP_IMPORT_DECLSPEC
00965 #  endif
00966 #  ifndef _STLP_CLASS_EXPORT_DECLSPEC
00967 #    define _STLP_CLASS_EXPORT_DECLSPEC
00968 #  endif
00969 #  ifndef _STLP_CLASS_IMPORT_DECLSPEC
00970 #    define _STLP_CLASS_IMPORT_DECLSPEC
00971 #  endif
00972 #  if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
00973 #    define  _STLP_DECLSPEC        _STLP_EXPORT_DECLSPEC
00974 #    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_EXPORT_DECLSPEC
00975 #  else
00976 #    define  _STLP_DECLSPEC        _STLP_IMPORT_DECLSPEC   /* Other modules, importing STLport exports */
00977 #    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_IMPORT_DECLSPEC
00978 #  endif
00979 
00980 #else /* Not using DLL export/import specifications */
00981 
00982 #  define _STLP_DECLSPEC
00983 #  define _STLP_CLASS_DECLSPEC
00984 
00985 #endif
00986 
00987 #define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
00988 
00989 #if defined (_STLP_NEED_ADDITIONAL_STATIC_DECLSPEC)
00990 #  define _STLP_STATIC_DECLSPEC _STLP_DECLSPEC
00991 #else
00992 #  define _STLP_STATIC_DECLSPEC
00993 #endif
00994 
00995 #if !defined (_STLP_CALL)
00996 #  define _STLP_CALL
00997 #endif
00998 
00999 #ifndef _STLP_USE_NO_IOSTREAMS
01000 
01001 #  if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM)
01002 #    define __USE_STD_IOSTREAM
01003 #  endif
01004 
01005 /* We only need to expose details of streams implementation
01006    if we use non-standard i/o or are building STLport*/
01007 #  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO)
01008 #    define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1
01009 #  endif
01010 
01011 /* We only need to expose details of global implementation if we are building STLport
01012    or have not instantiated everything in the lib */
01013 #  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE)
01014 #    undef  _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
01015 #    define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1
01016 #  endif
01017 
01018 #else /* _STLP_USE_NO_IOSTREAMS */
01019 /* when we are not using SGI iostreams, we must expose globals, but not streams implementation */
01020 #  define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
01021 #endif /* _STLP_USE_NO_IOSTREAMS */
01022 
01023 #ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
01024 #  define _STLP_PSPEC2(t1,t2) < t1,t2 >
01025 #  define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 >
01026 #else
01027 #  define _STLP_PSPEC2(t1,t2)  /* nothing */
01028 #  define _STLP_PSPEC3(t1,t2,t3)  /* nothing */
01029 #endif
01030 
01031 /* Activation of the partial template workaround:
01032  */
01033 #if !defined(_STLP_DONT_USE_PARTIAL_SPEC_WRKD) &&\
01034    (!defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || !defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER))
01035 #  define _STLP_USE_PARTIAL_SPEC_WORKAROUND
01036 #endif
01037 
01038 #ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
01039 #  define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \
01040 _TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\
01041 _TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y)  {return __y < __x;}\
01042 _TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\
01043 _TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);}
01044 #else
01045 #  define _STLP_RELOPS_OPERATORS(_TMPL, _TP)
01046 #endif
01047 
01048 #if defined ( _STLP_USE_ABBREVS )
01049 #  include <stl/_abbrevs.h>
01050 #endif
01051 
01052 /* Some really useful macro */
01053 #define _STLP_ARRAY_SIZE(A) sizeof(A) / sizeof(A[0])
01054 #define _STLP_ARRAY_AND_SIZE(A) A, sizeof(A) / sizeof(A[0])
01055 
01056 #if !defined (_STLP_MARK_PARAMETER_AS_UNUSED)
01057 #  define _STLP_MARK_PARAMETER_AS_UNUSED(X) (void*)X;
01058 #endif
01059 
01060 #if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY)
01061 #  if defined (_STLP_USE_NO_IOSTREAMS)
01062 #    undef _STLP_CHECK_RUNTIME_COMPATIBILITY
01063 #  else
01064 /* The extern "C" simply makes the symbol simpler. */
01065 #if defined (__cplusplus)
01066 extern "C"
01067 #endif
01068 void _STLP_DECLSPEC _STLP_CALL _STLP_CHECK_RUNTIME_COMPATIBILITY();
01069 #  endif
01070 #endif
01071 
01072 /* some cleanup */
01073 #undef _STLP_DONT_USE_BOOL_TYPEDEF
01074 #undef _STLP_YVALS_H
01075 #undef _STLP_LOOP_INLINE_PROBLEMS
01076 #undef _STLP_NEED_EXPLICIT
01077 #undef _STLP_NEED_TYPENAME
01078 #undef _STLP_NO_NEW_STYLE_CASTS
01079 #undef __AUTO_CONFIGURED
01080 
01081 #endif /* RC_INVOKED */
01082 
01083 #endif /* _STLP_FEATURES_H */

Generated on Sun May 27 2012 04:29:49 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.